码迷,mamicode.com
首页 > 编程语言 > 详细

最大流 SAP 算法伪代码

时间:2016-07-30 01:39:17      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

代码当中是以边的方式存图,邻接矩阵类似。

 1 int dfs(int u, int flow)
 2 {
 3     int tmp, out = 0;
 4     for (int p = fst[u]; p; p = nxt[p]) {
 5         if (w[p] <= 0 || dis[u] != dis[v[p]] + 1)
 6             continue;
 7         w[p] -= tmp = dfs(v[p], min(flow - out, w[p]));
 8         w[p + 1] += tmp;
 9         if ((out += tmp) == flow || dis[u] >= n)
10             return out;
11     }
12     if (dis[u] >= n)
13         return out;
14     if (!--cnt[dis[u]])
15         dis[u] = n;
16     ++cnt[++dis[u]];
17     return out;
18 }
19 
20 int main()
21 {
22     /* input */
23     
24     while (dis[1] < n)
25         ans += dfs(1, INF_INT);
26     printf("%d\n", ans);
27     return 0;
28 }

 

最大流 SAP 算法伪代码

标签:

原文地址:http://www.cnblogs.com/ghcred/p/5720053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!