摘要:
1 ///双连通模板 2 void dfs(int u,int fa) 3 { 4 dfn[u]=low[u]=++dfs_cut; 5 vs[u]=1; 6 s.push(u); 7 int p=1; ///去重 8 for (int i=0;i<g[u].size();i++) 9 { 10 int v=... 阅读全文
摘要:
1 ///最小费用最大流模板 2 bool spfa() 3 { 4 fill(vs,vs+n+2,false); 5 fill(d,d+n+2,inf); 6 fill(father,father+n+2,-1); 7 queueq; 8 d[0]=0; 9 q.push(0); 10 while (!q.... 阅读全文
摘要:
///最大流Dinic模板 const int mx=1005; struct Eage { int u,v; int next,cap; }; Eage eage[mx*2]; int head[mx]; int d[mx]; int pos; int n,m; void Init() { memset(head,-1,sizeof(head)); pos=0... 阅读全文
摘要:
1 ///强连通模板 2 void dfs(int u) 3 { 4 dfn[u]=low[u]=++dfs_cut; 5 vs[u]=1; 6 s.push(u); 7 for (int i=0;i<g[u].size();i++) 8 { 9 int v=g[u][i]; 10 if(!vs[v]) 11... 阅读全文
摘要:
1 ///割点和桥模板 2 void dfs(int v,int u) 3 { 4 int child=0; 5 dfn[v]=low[v]=++dfn_cut; 6 vs[v]=1; 7 for (int i=0;i1&&v==1) flag[v]=1; 16 if (v!=1&&low[w]>=dfn[v]) flag[v... 阅读全文
摘要:
1 ///Lucas模板 2 LL quick_mod(LL a, LL b) 3 { 4 LL ans = 1; 5 a %= p; 6 while(b) 7 { 8 if(b & 1) 9 { 10 ans = ans * a % p; 11 b--; 12 ... 阅读全文
摘要:
1 ///逆元模板 2 ///扩展欧几里得算法模板 3 int extendGcd(int a,int b,int &x,int &y) 4 { 5 if (b==0) 6 { 7 x=1; 8 y=0; 9 return a; 10 } 11 int d= extendGcd(b,a%b,y,x)... 阅读全文
摘要:
1 ///扩展欧几里得模板 2 int extendGcd(int a,int b,int &x,int &y) 3 { 4 if(b==0) 5 { 6 x=1; 7 y=0; 8 return a; 9 } 10 int d= extendGcd(b,a%b,y,x); 11 ... 阅读全文
摘要:
1 ///spfa模板 2 void spfa() 3 { 4 queueq; 5 d[1]=0; 6 q.push(1); 7 while (!q.empty()) 8 { 9 int u=q.front(); 10 q.pop(); 11 vs[u]=false; 12 ... 阅读全文
摘要:
1 ///Dijkstra优先队列模板 2 struct Node 3 { 4 int x,d; 5 Node(int a,int b){x=a;d=b;} 6 bool operator a.d; 9 } 10 }; 11 vectorg[mx]; 12 int ds[mx]; 13 int n,m; 14 15 void dijk() 16 {... 阅读全文