EK(BFS)求最大流的算法模板(邻接表)
来源:互联网 发布:云计算最大的特征是() 编辑:程序博客网 时间:2024/06/06 00:04
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#define inf 0x3f3f3f3fusing namespace std;int Map[300][300],path[300];int bfs(int st,int en){ queue<int> q; int flow[300]; memset(flow,0,sizeof(flow)); //memset(path,0,sizeof(path)); while(!q.empty()) q.pop(); q.push(st);flow[st]=inf;path[st]=-1; while(!q.empty()) { int save=q.front(); q.pop(); if (save==en) break; for (int k=1;k<300;k++) if (Map[save][k]&&!flow[k]) { if (flow[save]<Map[save][k]) flow[k]=flow[save]; else flow[k]=Map[save][k]; path[k]=save; q.push(k); } } if (flow[en]==0) return -1; return flow[en];}int Ford_f(int st,int en){ int max_f(0),flow(0); flow=bfs(st,en); while(flow!=-1) { for (int k=en;path[k]!=-1;k=path[k]) { Map[path[k]][k]-=flow; Map[k][path[k]]+=flow; } max_f+=flow; flow=bfs(st,en); } return max_f;}int main(){ int m,n; while(~scanf("%d %d",&n,&m)) { memset(Map,0,sizeof(Map)); for (int k=1;k<=n;k++) { int a,b,c; scanf("%d %d %d",&a,&b,&c); Map[a][b]+=c; } printf("%d\n",Ford_f(1,m)); } return 0;}
最大流的思想就去看kuangbin的博客吧,该说的都说了这里就是mark一下记个板子,但是这个板子时间复杂度较高,只能是适用于较小的数据,就直接用最方便的邻接表来存数据了,接下来会补一个时间复杂度较低的板子,那个东西我会用边存来节省空间复杂度
阅读全文
0 0
- EK(BFS)求最大流的算法模板(邻接表)
- HDU 3549 Flow Problem(最大流+EK邻接表||邻接矩阵||dinic算法模板比较)
- HDOJ1532 最大流 BFS + EK 算法 模板
- 最大流DFS(EK)算法模板
- 【模板】EK求最大流
- 匈牙利算法 && EK(邻接表)
- HDU 3549 最大流 EK算法 邻接表实现
- 最大流之EK算法模板(小白皮)
- 最大流EK算法模板
- 最大流EK算法模板
- EK(邻接表)模板
- [图论]最大流问题(网络流最大流EK算法 BFS)
- hdu3549 Flow Problem 网络最大流的三种写法(Ek,Dinic(邻接矩阵,邻接表),Isap)
- poj 1273 Drainage Ditches(最大流的EK算法模板)
- 网络流--求最大流:EK算法
- HDU_1532 && HDU_3549(最大流EK算法模板)
- 最大流问题(EK算法模板)
- HDU1532(最大流EK算法模板题)
- sqlzoo练习答案--SELECT within SELECT Tutorial
- invokespecial指令
- (三分)Turn the corner -- HDOJ
- MATLAB画出堆叠折线图
- SVN解决冲突
- EK(BFS)求最大流的算法模板(邻接表)
- Attention Model in NLP
- C# 调用颜色的RGB值_RGB颜色转换十六进制颜色
- Java类的加载过程
- 处理错误状况的方法的
- 2016年普级组模拟试题(10月20日) 小游戏game
- 第二阶段-数据结构导论
- 文章标题 POJ 2065 :SETI (高斯消元)
- 运维小白死磕的专业术语,你真的理解透了吗?