网络流最大流之Dinic算法模板
来源:互联网 发布:格斗术软件 编辑:程序博客网 时间:2024/05/18 14:24
bool bfs(int x){memset(mark,-1,sizeof(mark));mark[x]=1;int que[maxn];int front=0,rear=0;que[rear++]=x;while(front!=rear){int k=que[front++];front%=maxn;for(int i=head[k];i!=-1;i=edge[i].next){int v=edge[i].v;if(mark[v]==-1&&edge[i].flow>0){mark[v]=mark[k]+1;que[rear++]=v;rear%=maxn;if(v==des)return true;}}}return false;}int dfs(int u){int Stack[maxn],cur[maxn]; memcpy(cur,head,sizeof(head)); int top=0;int res=0; while(1) { if(u==des) { int min=INF,loc; for(int i=0;i<top;i++){if(min>edge[Stack[i]].flow){min=edge[Stack[i]].flow;loc=i;}} for(int i=0;i<top;i++) { edge[Stack[i]].flow-=min; edge[Stack[i]^1].flow+=min; } res+=min; top=loc; u=edge[Stack[top]].u; } for(int i=cur[u];i!=-1;cur[u]=i=edge[i].next){if(edge[i].flow&&mark[u]+1==mark[edge[i].v])break;} if(cur[u]!=-1) { Stack[top++]=cur[u]; u=edge[cur[u]].v; } else { if(top==0)break; mark[u]=-1; u=edge[Stack[--top]].u; } }return res;}int Dinic(int x){int res=0;while(bfs(src))res+=dfs(src);return res;}
0 0
- 网络流最大流之Dinic算法模板
- Dinic算法 P3376 【模板】网络最大流
- 最大网络流模板Dinic算法
- 网络最大流之dinic模板
- 【网络流算法模板】最大流:dinic模板
- 最大流 dinic算法模板
- 最大流 dinic算法 模板
- 网络流模板:最大流ISAP算法和Dinic算法
- 网络流模板:最大流ISAP算法和Dinic算法
- 网络流 Dinic算法求最大流模板
- hdu4280 Island Transport (网络流最大流)&(dinic算法模板)
- 最大网络流Dinic算法
- 网络最大流 dinic算法
- 网络最大流(dinic)【模板】
- 网络最大流(dinic)模板
- 【模板】网络最大流 (Dinic)
- 【模板】Dinic求网络最大流
- 最大流之Dinic算法
- Axis2创建WebService实例
- CSDN开源夏令营 百度数据可视化实践 ECharts(7)
- openGL点精灵PointSprite详解: 纹理映射,旋转,缩放,移动
- springmvc登录拦截器
- Js Jquery 关于endWith() 和startWith() 的使用
- 网络流最大流之Dinic算法模板
- 配置Spring数据源
- 出租车计费(C语言)
- HDU 4925 Apple Tree
- HDOJ 题目2709Sumsets(递推)
- BigDecimal和Int类型的转换以及BigDecimal类型的运算
- Sql Server 行转列的多种写法
- Linux静态库(含依赖库)实战与简析
- java反射的学习