网络流学习:最大流Dinic算法总结
来源:互联网 发布:功夫熊猫知乎 编辑:程序博客网 时间:2024/05/16 08:16
Dinic算法即连续最短增广路算法.
思路很清晰,代码很简单.
每次用BFS建立层次网络,如果汇点不在层次网络中,则退出算法;
得到层次网络后,利用DFS进行增广.
while(BFS()) ans+=DFS(1,inf);
BFS的过程中用level数组存各点的层次,相当于将层次网络储存了.
bool BFS(){ queue<int> q; memset(level,0,sizeof(level)); level[1]=1; q.push(1); while(!q.empty()) { int v=q.front(); q.pop(); for(int i=1;i<=N;i++) { if(!level[i]&&Map[v][i]) { level[i]=level[v]+1; q.push(i); } } } if(!level[N]) return false; else return true;}
DFS的过程就是搜索增广路并且回退进行增广的过程.
int DFS(int v,int sum){ if(v==N) return sum; int s=sum; for(int i=1;sum&&i<=N;i++) { if(Map[v][i]&&level[v]+1==level[i]) { //从点i开始搜到一条增广路,并且得到这条路上的当前容量最小的弧的容量 int t=DFS(i,min(sum,Map[v][i])); //对搜到的增广路进行增广 Map[v][i]-=t; Map[i][v]+=t; sum-=t; } } return s-sum;}
0 0
- 网络流学习:最大流Dinic算法总结
- 最大网络流Dinic算法
- 网络最大流 dinic算法
- [网络流]最大流算法 Dinic
- Dinic算法(网络流,最大流)
- Dinic算法 P3376 【模板】网络最大流
- 最大网络流模板Dinic算法
- dinic网络最大流
- Dinic算法最大流。。
- 最大流dinic算法
- 最大流 dinic算法
- 最大流 dinic算法
- 最大流-dinic算法
- 最大流-Dinic算法
- 最大流 Dinic算法
- dinic算法求最大流的学习
- 学习笔记 --- 最大流Dinic算法
- 网络流模板:最大流ISAP算法和Dinic算法
- -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a
- 黑马程序员--c语言结构体介绍
- Android TV 盒子开发焦点控制
- Handler、Message、Looper等Android线程通信
- 干掉sina sae的友情提示 , 未实名认证
- 网络流学习:最大流Dinic算法总结
- 用不了Google怎么办?
- 曾经的单纯
- MyEclipse设置注释格式(转载)
- Hadoop之HDFS的Shell脚本命令总结
- 486A - Calculating Function
- UVA 10820 Send a Table 欧拉函数制phi表 累加sum
- 赢在项目工具的落地-讲师团俊平老师主讲
- G.729A--编码--计算加权合成语音信号wsp[]