首页 > 其他 > 详细

最大流算法---Edmond-Karp

时间:2014-03-06 01:57:19      阅读:423      评论:0      收藏:0      [点我收藏+]

这个算法是基于FF方法,就是通过不断求残余网络的增广路来增广流量,直到找不到增广路为止。注意:每次找到增广路以后都要更新原网络。EK算法通过BFS寻找源S到汇T的一条最短路径,因此时间复杂度是O(VE^2).

模板代码如下:

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<queue>
 3 #include<cstring>
 4 #include<cstdio>
 5 #define MAX 1000
 6 using namespace std;
 7 int res[MAX][MAX];
 8 int vis[MAX], pre[MAX];
 9 queue<int>q;
10 int n;
11 bool bfs(int s, int t)
12 {
13     int p;
14     memset(vis, 0, sizeof(vis));
15     memset(pre, -1, sizeof(pre));
16     while(!q.empty() q.pop();
17     q.push(s);
18     vis[s] = 1;
19     while(!q.empty())
20     {
21         p = q.front();
22         q.pop();
23         for(int i = 1;i <= n;i ++)
24         {
25             if(!vis[i] && res[p][i] > 0)
26             {
27                 pre[i] = p;
28                 vis[i] = 1;
29                 if(i == t)
30                     return true;
31                 q.push(i);
32             }
33         }
34     }
35     return false;
36 }
37 
38 int EdmondKarp(int s, int t)
39 {
40     int flow = 0, d, i, u;
41     while(bfs(s, t))
42     {
43         d = 1 << 30;
44         u = t;
45         while(pre[u] != -1)
46         {
47             d = min(d, res[pre[u]][u]);
48             u = pre[u];
49         }
50         u = t;
51         while(pre[u] != -1)
52         {
53             res[pre[u]][u] -= d;
54             res[u][pre[u]] += d;
55             u = pre[u];
56         }
57         flow += d;
58     }
59     return flow;
60 }
61 
62 int main(int argc, char const *argv[]) 
63 {
64     int m, u, v, w;
65     freopen("in.c", "r", stdin);
66     while(cin >> n >> m)
67     {
68         memset(res, 0, sizeof(res));
69         for(int i = 0;i < m;i ++)
70         {
71             cin >> u >> v >> w;
72             res[u][v] += w;
73         }
74         int ans = EdmondKarp(1, n);
75         cout << ans << endl;
76     }
77     return 0;
78 }
bubuko.com,布布扣

最大流算法---Edmond-Karp,布布扣,bubuko.com

最大流算法---Edmond-Karp

原文:http://www.cnblogs.com/anhuizhiye/p/3583366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!