
网络流
小狐狸jun
菜鸟飞呀飞~
展开
-
poj1459SAP最大流模板题
最大流建图是关键,将一个题目转化为最大流,要有清晰的建图思想。这道题注意构建源点和汇点,然后直接套模板。 #include#include#includeusing namespace std;const int maxn = 220;const int inf = 10000000;//不要开太大int c[maxn][maxn];int q[maxn原创 2013-04-30 20:38:56 · 511 阅读 · 0 评论 -
poj 2455 二分+最大流
这个因为点少用邻接矩阵做的。 题意:求由1到n的t条不重复路径中最大边权值的最小值。 思路:先对边权进行排序,然后二分边权值,建图求从1到n的最大流,当最大流为t时便求出答案。 代码:#include#include#include#includeusing namespace std;#define N 210int n,m,t;int a原创 2013-08-30 10:56:51 · 537 阅读 · 0 评论 -
hdu 3549最大流Ford-Fulkerson算法
Ford-Fulkerson算法戳戳http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html Ford-Fulkerson方法依赖于三种重要思想:残留网络,增广路径和割。Ford-Fulkerson方法是一种迭代的方法。开始时,对所有的u,v∈V有f(u,v)=0,即初始状态时流的值为0。在每次迭代中,可通过寻找转载 2013-08-29 17:06:38 · 690 阅读 · 0 评论 -
poj2914无向图的最小割模板
题意:给出无向图的点,边,权值。求最小割。 思路:根据题目规模,最大流算法会超时。网上参考的模板代码。 代码:/*最小割集◎Stoer-Wagner算法:一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。prim算法不仅仅可以求最小生成树,也可以求“最大生成树”。最小割集Stoer-Wagner算法就是典型的应用原创 2013-08-07 16:10:13 · 2026 阅读 · 0 评论 -
hdu 4292 拆点+简单网络流
这题拆点一开始没想明白。原本的思路是 源点与食物相连,食物与人相连,人与饮料相连,饮料与汇点相连。。这样就貌似做到了最大流的求法了,但是这样就会出现一个问题,同一个牛可以选择多次的问题,因此需要给每头牛给上一个容量为1的限制条件,那就是拆点啦!~ 代码:#include#include#include#define MAXN 815#define INF 1e8原创 2013-06-01 14:46:28 · 575 阅读 · 0 评论 -
hdu3879 网络流(经典最大获利问题)
这题建图自己想了半天搞不懂,然后看了一下别人的建图。。。一脸茫然。。最后去看了下胡波涛的《最小割模型在信息学竞赛的应用》里面详细的讲解了将最大获利问题转换为最小割模型的过程。建图:源点与人连边,容量为获利。站点与汇点连边,容量为耗资。然后是相应的人与其需求的站点连边,容量为无穷。这样建图就完成了,然后就是找最小割,即割边上的值便为不能获取的利润值,用总值减去得出最大利润。原创 2013-06-03 16:50:26 · 1359 阅读 · 0 评论 -
poj3281 拆点+网络流
和上题一样,水过。代码: #include#include#include#define MAXN 815#define INF 1e8#define min(a,b) (a<b?a:b)#define max(a,b) (a>b?a:b)using namespace std;struct edge{ int u,v,w,next;}原创 2013-06-01 15:11:40 · 489 阅读 · 0 评论 -
poj3422 最小费用最大流
上一题的模板应用,好久没做图论,结果建图一塌糊涂。。。题意,给出一个矩阵,求从左上角到右下角走k次使路上所得的权值最大,其中经过一个权值后,该点权值清零。思路:建图,每一个格子为一个点,同时衍生另外一个点,用来存清零后的路线,则每个点有两条路,一条是容量为1,权值为给出的值,一条为容量为k,权值为0;因为求得是最大,所以建图的时候用1000减去原来的数,求出的最小费再用k*2(n-1)原创 2013-05-31 22:29:21 · 530 阅读 · 0 评论 -
poj 2135最小费用最大流模板
最小费用最大流模板,这是摘抄别人的模板、、、罪恶啊,等省赛后好好搞网络流自己敲。题意给出一个无向图,求1到n点最短环路,要求每个点只能经过一次;思路:即找出图中无交集的两条最短路,建图,源点与1,汇点与n相连,同时附容量为2,其他边则附容量为1。 代码:#include #include #include #include using namespace std原创 2013-05-31 19:44:57 · 583 阅读 · 0 评论 -
poj2112二分+最大流
跟上题一样,因为一开始那份模板用的少,总怀疑那份sap模板出错了,今天换了一个模板做另外一题很像的题。(先前的模板不能处理过大的数)事实证明我过程中处理错了,好吧,先放着,校赛完在来找错了。 ////////////////////////////////////////////最后在错误在建图的过程中,严格建图过程,因为增加了牛与牛和机器与机器的距离,导致求最大流结果时出错。代码原创 2013-05-03 20:53:40 · 604 阅读 · 0 评论 -
poj2391Floyd+二分+最大流
好吧算增加了一个模板吧。。过两天要校赛了,没过的题先放着,这两天把做过的整理整理。构图思路:将点拆分成2组,一组代表牛,一组代表遮蔽点,然后构建源点和汇点;用floyd求出点与点之间的最大距离,根据最大距离开始二分,使距离小于mid的点在最大流中开路,若得出最大流等于牛的个数,mid减少,否则增大。求出答案。这题注意一下构图,先前的sap模板会改变原图的值,且构图的时候注意双向边。原创 2013-05-02 22:45:56 · 525 阅读 · 0 评论 -
hdu1532最大流EK与SAP算法
EK是最朴素的最大流算法了,但效率比较慢,当然代码也比较清晰,思路去看LRJ的白书就行了。但是由于网上大牛总结SAP基本上是解决最大流的最标准模板了, 网上大牛说基本没有什么最大流能卡SAP。 EK代码:#include#include#includeusing namespace std;const int N = 210; //小规模 不用考虑效率原创 2013-04-30 20:36:53 · 1128 阅读 · 1 评论 -
poj 1149经典网络流构图
题意:m个猪圈,n个客户,每个客户给出选则猪圈的钥匙和需要购买猪的个数,其中每次客户购买时客户选则的猪圈数量可以相互更换,问最大购买数量。 思路:以客户作为除源点汇点之外的点,然后对于每个猪圈从源点连其第一次购买的客户,容量为其猪的个数,随后链接其下一次购买的客户容量为无穷。最后每个客户与其汇点相连,数量为想要购买的个数。 一开始没想出来,其实对于每个需求,只要控制好其源点容量的进原创 2013-09-03 10:05:46 · 883 阅读 · 0 评论