最大流
zzti_xiaowei
xxx
展开
-
最大流之Ford_Fulkerson算法模板
Ford_Fulkerson算法思想:在残余网络中不断寻找一条从s到t的增广路。#include<iostream> #include<cstdio> #include<string.h> #include<vector> #include<algorithm> using namespace std; const int Max_n=1...原创 2018-01-29 17:57:14 · 446 阅读 · 0 评论 -
最大流之Edmonds_Karp算法
Edmond Karp算法的大概思想:反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束。在寻找增广路径时,可以用BFS来找,并且更新残留网络的值(涉及到反向边)。而找到delta后,则使最大流值加上delta,更新为当前的最大流值。(粗体表明需要掌握的概念) 关于反向边:以下摘至HDOJ的课件和网上的:首先来看一下基本的网络流最大流模型...转载 2018-01-31 21:46:03 · 417 阅读 · 0 评论 -
最大流之Dinic算法模板
Ford_Fulkerson算法是通过深度优先搜索寻找增广路,并沿着它增广。与之相对,Dinic算法总是寻找最短的增广路,并沿着它增广。因为最短增广路的长度在增广过程中始终不会变短,所以无需每次都通过宽度预先搜索来寻找最短增广路。我们可以先进行一次宽度优先搜索,然后考虑有近距离指向远距离顶点的边所组成的分成图,在上面进行深度优先搜素寻找最短增广路。如果在分层图上找不到新的增广路了,则说明最短增广路...原创 2018-02-06 01:09:00 · 246 阅读 · 0 评论 -
证明增广路算法的正确性
一直对增广路这种贪心思想表示怀疑,今天看到一个很好的证明~首先介绍割的概念,所谓图的割,指的是某个顶点集合S属于V,从S出发的所有边的集合成为割(S,V\S),这些边的容量和被称为割的容量,如果有源点s属于S,汇点t属于V\S,则称之为s-t割,如果将s-t割的所有边都在原图中去掉,则不再有s->t的路径。容易得到,对于任意一个s-t割,总有f的流量<=割的容量,根据平衡条件,当且仅当...转载 2018-02-06 01:22:32 · 856 阅读 · 0 评论 -
poj-1459 Power Network
[题目链接] 思路:最大流模板题,但是还是手残,敲的磕磕绊绊,思路就不说啦~~ 代码: #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<vector> using names...原创 2018-07-17 20:52:08 · 158 阅读 · 0 评论 -
poj-3281 Dining
[题目链接] 思路:最大流变形—顶点也有容量限制的情况! 代码: #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<algorithm> using namespace s...原创 2018-07-19 16:33:46 · 177 阅读 · 0 评论 -
网络流24题
题目列表: &amp;amp;amp;amp;amp;amp;amp;lt;最大流有FF、EK、Dinic算法,最小费用流有SPFA、DIjkstra求解算法等,网络流在于建模,在此不在贴出代码&amp;amp;amp;amp;amp;amp;amp;gt; P2756 飞行员配对方案问题 二分图最大匹配—匈牙利算法,看着模板一顿乱敲即可。 P4016 负载平衡问题 最小费用流 建模:源点s=0,汇点t=n+1,平均值ave(对于样例为12) 源原创 2018-10-12 11:29:49 · 398 阅读 · 0 评论