首页 > 搜索 > 增广路径算法入门,增广路算法 (最大流问题)

增广路径算法入门,增广路算法 (最大流问题)

互联网 2020-10-20 16:50:19
在线算命,八字测算命理

Edmonds-Karp算法:

计算机科学中, Edmonds–Karp算法通过实现Ford–Fulkerson算法来计算网络中的最大流,其时间复杂度为O(V E2). 该算法由Yefim (Chaim) Dinic 在1970年最先提出并由Jack Edmonds和Richard Karp 在1972年独立发表。

视频:Edmonds-Karp算法视频

最大流问题的目标:把最多的物品从s运送到t,其它点都是中转站。

算法思路:从0流开始不断增加流量,保持每次增加流量后都满足容量限制·斜对称性·流量平衡3个条件。

增广路:残量网络中任何一条从s到t的有向道路都对应一条原图中的增广路。

增广:只要求出增广路中所有残量的最小值d,把对应的所有边都加上d。

最大流判断条件:当残量网络中不存在增广路,则当前流就是最大流。

 

POJ 1459

模板题!

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 14 #define c_false ios_base::sync_with_stdio(false); cin.tie(0)15 #define INF 0x3f3f3f3f16 #define INFL 0x3f3f3f3f3f3f3f3f17 #define zero_(x,y) memset(x , y , sizeof(x))18 #define zero(x) memset(x , 0 , sizeof(x))19 #define MAX(x) memset(x , 0x3f ,sizeof(x))20 #define swa(x,y) {LL s;s=x;x=y;y=s;}21 using namespace std ;22 #define N 50523 24 const double PI = acos(-1.0);25 typedef long long LL ;26 27 int n, np, nc, m, ans;28 int Map[N][N], pre[N], que[N];29 bool vis[N];30 31 bool bfs(){32 int head, tail;33 zero(vis);34 head = tail = 1;35 que[tail++] = n;36 vis[n] = true;37 while(tail > head){38 int u = que[head ++];39 for(int i = 0; ihead){38 int u = que[head ++];39 for(int i = 0; i
免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多