最大流算法模板 Edmonds—Karp
2014-07-11 16:16
225 查看
Edmonds—Karp埃德蒙兹-卡尔普
#include <cstdio> #include <cstring> #include <queue> #define MAXN 205 #define INF 0x7fffffff using namespace std; int cap[MAXN][MAXN], f[MAXN][MAXN];//记录容量 和 流量 int pre[MAXN];//记录增广路径 int p[MAXN];//记录增广时的残量 int n,;//点的个数 int Edmonds_Karp(int s, int t) { int v, u; f = 0; queue<int> q; memset(f, 0, sizeof(f)); while (true) {//BFS找增广路 memset(p, 0, sizeof(p)); p[s] = INF; q.push(s); while (!q.empty()) { u = q.front(); q.pop(); for (v = 1; v <= n; v++) if (!p[v] && cap[u][v] > f[u][v]) { //找到新节点 pre[v] = u;//记录v的父亲,并加入FIFO队列 q.push(v); p[v] = p[u] < cap[u][v] - f[u][v] ? p[u] : cap[u][v] - f[u][v]; //s-v路径上的最小残量 } } if (p[t] == 0) break;//找不到增广路,则当前流已经是最大流::最小割最大流定理 for (u = t; u != s; u = pre[u]) { f[pre[u]][u] += p[t]; //更新正向流量 f[u][pre[u]] -= p[t]; //更新反向流量 } f += p[t]; //更新从s流出的总流量 } }
相关文章推荐
- 图的最大流算法--Edmonds-karp
- 模板:Edmonds_Karp 算法
- 最大流模板(Edmonds-Karp)
- Edmonds_Karp 算法模板(自用)
- hdu 1532 Drainage Ditches(Edmonds-Karp最大流算法)
- POJ1273 最大流模板题_Edmonds_Karp
- templete_Edmonds_Karp(BFS求最大流算法)
- Edmonds_Karp 算法
- pku 1273 Drainage Ditches( Edmond-Karp最大流模板)
- 最大流之Edmonds-Karp算 4000 法(模板)
- hdoj-1532-edmondsKarp最大流算法模板
- 【算法笔记】总结 - 网络流 Edmonds-Karp 算法和 dinic 算法
- 网络流_Edmonds_Karp 算法
- 最大流入门POJ 1273 Edmonds-Karp
- Edmonds_Karp 算法 (转)
- 《网络流学习笔记02--Edmonds-Karp,Ford-Fulkerson,Dinic三种算法实现最大流》
- 网络流,增广路,Edmonds_Karp 以及 Dinic 算法(HDU 1532)
- 最大流 - Edmonds-Karp 增广路算法
- Edmonds_Karp 算法 (转)
- Edmonds_Karp 算法