网络最大流之dinic模板
来源:互联网 发布:小米生态链是什么 知乎 编辑:程序博客网 时间:2024/06/05 10:06
dinic:
const int maxn=55;const int maxm=4005;int first[maxn],iter[maxn],lvl[maxn],q[maxm];int nex[maxm],u[maxm],v[maxm],w[maxm];int n,m,ecnt;void dinic_bfs(int s){ int f,r,x,e; clr(lvl,-1); f=r=0; q[r++]=s;lvl[s]=0; while(f<r) { x=q[f++]; for(e=first[x];~e;e=nex[e]) if(w[e]&&lvl[v[e]]==-1){ lvl[v[e]]=lvl[x]+1; q[r++]=v[e]; } }}int dinic_dfs(int s,int t,int maxf){ if(s==t)return maxf; int ret=maxf; for(int &e=iter[s];~e;e=nex[e]) if(w[e]&&lvl[s]<lvl[v[e]]){ int f=dinic_dfs(v[e],t,min(ret,w[e])); w[e]-=f; w[e^1]+=f; ret-=f; } return maxf-ret;}int max_flow(int s,int t){ int f,sum=0; while(dinic_bfs(s),lvl[t]!=-1) { memcpy(iter,first,sizeof iter); while(f=dinic_dfs(s,t,INF)) sum+=f; } return sum;}void add_(int a,int b,int cc){ u[ecnt]=a; v[ecnt]=b; w[ecnt]=cc; nex[ecnt]=first[a]; first[a]=ecnt++; u[ecnt]=b; v[ecnt]=a; w[ecnt]=0; nex[ecnt]=first[b]; first[b]=ecnt++;}void min_cut(){ for(int i=0;i<ecnt;i+=2) { if(!w[i])w[i]=1; else w[i]=INF; w[i^1]=0; }}
0 0
- 网络最大流之dinic模板
- 网络流最大流之Dinic算法模板
- 网络最大流(dinic)【模板】
- 网络最大流(dinic)模板
- Dinic算法 P3376 【模板】网络最大流
- 【模板】网络最大流 (Dinic)
- 【模板】Dinic求网络最大流
- 最大网络流模板Dinic算法
- 最大流dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- 最大流dinic 模板
- 最大流dinic模板
- 最大流dinic模板
- 最大流:Dinic模板
- 最大流Dinic模板
- 最大流Dinic模板
- Java面试题
- Ubuntu系统中安装修改JAVA环境变量
- 七年IT生涯,就这么的废了
- 监测和管理Xcache状态
- poj 1088 滑雪(DP+记忆化dfs)
- 网络最大流之dinic模板
- 【STL】POJ 2418---Hardwood Species
- dp+递归_poj_1088
- hdu 1027 Ignatius and the Princess II
- C语言常量与符号常量
- win8.1 64位环境搭建android开发环境
- POJ 2406 Power Strings
- HTML 网页制作
- java数组