最大流EK算法模板
来源:互联网 发布:微信一键传图软件 编辑:程序博客网 时间:2024/05/29 10:12
来自刘汝佳小白书当中的代码,每次使用广度优先搜索来寻找增广路径。
const int maxn=501;struct Edge{ int from,to,cap,flow; Edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f) {}};struct EdmondsKarp{ int n,m; vector<Edge> edges; vector<int> G[maxn]; int a[maxn]; int p[maxn]; void init(int n) { for(int i=0;i<=n;i++) G[i].clear(); edges.clear(); } void AddEdge(int from,int to,int cap) { edges.push_back(Edge(from,to,cap,0)); edges.push_back(Edge(to,from,0,0)); m=edges.size(); G[from].push_back(m-2); G[to].push_back(m-1); } int Maxflow(int s,int t) { int flow=0; while(true) { memset(a,0,sizeof(a)); queue<int> Q; Q.push(s); a[s]=INT_MAX; while(!Q.empty()) { int x=Q.front(); Q.pop(); for(int i=0;i<G[x].size();i++) { Edge& e = edges[G[x][i]]; if(!a[e.to]&&e.cap>e.flow) { p[e.to]=G[x][i]; a[e.to]=min(a[x],e.cap-e.flow); Q.push(e.to); } } if(a[t]) break; } if(!a[t]) break; for(int u=t;u!=s;u=edges[p[u]].from) { edges[p[u]].flow+=a[t]; edges[p[u]^1].flow-=a[t]; } flow+=a[t]; } return flow; }};
0 0
- 最大流EK算法模板
- 最大流EK算法模板
- HDU_1532 && HDU_3549(最大流EK算法模板)
- 最大流问题(EK算法模板)
- HDU1532(最大流EK算法模板题)
- 最大流DFS(EK)算法模板
- HDOJ1532 最大流 BFS + EK 算法 模板
- 最大流EK算法
- 最大流EK算法
- 最大流-EK算法
- 最大流-EK算法
- 网络流之最大流算法模板EK
- poj 1273 Drainage Ditches(最大流的EK算法模板)
- hdu 3549 Flow Problem(最大流EK算法模板)
- 最大流之EK算法模板(小白皮)
- HDU 3549 Flow Problem【最大流模板题,EK算法】
- 【模板】EK求最大流
- 最大流 EK算法详解
- SecureCRT 的三种脚本实例,js,vb,Python
- 谁拿了最多奖学金
- 如何将List<Interger> 转为List<String>
- 如何优雅地 对深度神经网络 进行训练
- 网站开发进阶(四十五)浅谈XML与HTML的区别
- 最大流EK算法模板
- leecode 解题总结:62. Unique Paths
- redhat虚拟机
- PAT甲级练习1010. Radix (25)
- cocos2dx-js(3.14版本) JS与C++ 互调 JS与JAVA 互调,JS与OC 互调
- leetcode -- 101. Symmetric Tree 【对称树,结构,内容】
- 自定义圆继承button实现多点触控和单点触控
- 深入理解JVM(八)——类加载的时机
- OpenCV画椭圆、实心圆、凹多边形、线段、矩形