Network Flows
文章平均质量分 79
kdqzzxxcc
这个作者很懒,什么都没留下…
展开
-
POJ 2135 费用流基础
题意:给出N个点,M条边,问从1-N来回走一次最短路径是多少,且一条边只能经过一次。直接一遍费用流即可。不过题目中初值需要注意,贡献了几次WA。#include #include #include #include #include #include #include #include #include #include #include #include #def原创 2013-05-15 16:20:55 · 964 阅读 · 0 评论 -
POJ 1273 Drainage Ditches 网络流基础题
题目扫了一眼,直接EK求解,1A。#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0)#define Max 205#define inf 1<<28#defi原创 2012-08-18 23:56:48 · 823 阅读 · 0 评论 -
POJ 3281 Dining 网络流
题意:给出N,F,D。表示N头牛,F种食物,D种饮料。接下来2-N+1行,输入n,m代表第i头牛喜欢的食物种类为n,饮料种类为m。接下来输入n个数,代表食物的编号,输入m个数,代表饮料的编号。输出最多能满足多少头牛吃上喜欢的食物和饮料。思路:将牛拆成2个点,左边为食物,右边为饮料。s---食物---牛---牛----饮料---e.每条边的限制流量为1.#includ原创 2012-09-17 21:29:48 · 619 阅读 · 0 评论 -
POJ 2516 Minimum Cost 费用流
题意:有M个货物供应点,它提供k种货物,有N个商店,这N个商店分别要从货物点订购一定量的这k种物品,每个供应点对这k种货物的供应量不同,每个商店对k种物品的需求量也不同,每个货物供应点向每个商店送不同种货物的单个物品的花费不同,现在给出货物供应点、商店、k种货物、花费间的关系,现在让你针对商店给出的订单,让你决定如何使所有供应点完成订单任务的最小花费,若能完成任务,则输出最小花费,否则输出-1.原创 2012-09-26 00:35:54 · 895 阅读 · 0 评论 -
POJ 2195 Going Home 费用流模版题(附KM算法,转)
题意:给出一个n*m的图,其中m是人,H是房子,每个人移动一步需要一块,问所有人移动到房子里的最少花费。建图:建立一个超级源点和超级汇点,S=0,T=2*num+1。从源点到所有的人建立一条流,容量cap[S][i]=1,费用cost[S][i]=0;从房子到汇点建立一条流,容量cap[j][T]=1,费用cost[j][T]=0;建立所有人到所有房子的流,cap[i][j原创 2012-09-27 00:05:42 · 1984 阅读 · 0 评论 -
HDU 1569 网络流dinic 模板
贴个模板,以前学的EK算法算起来年纪比我还大一倍了,该换个模板了。还有刚才CSDN肯定BUG了。。。。。#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0)原创 2013-04-25 00:03:14 · 1443 阅读 · 0 评论 -
POJ 1149 网络流
题意:有一些pighouse,里面有一些pig,但是这些pighouse的钥匙都在一些顾客的手上,每个顾客过来都会打开所有可以打开的pighouse,然后他有一个购买数量,购买后老板可以根据后面顾客的需求将pig放进任意的pighouse里面,老板知道每个顾客的信息,问最多能卖出多少pig。差不多就是这个意思。建图:首先知道顾客是按顺序来的,那么每个pighouse的第一个顾客和源点连起来,流原创 2013-04-25 21:41:27 · 877 阅读 · 0 评论 -
POJ 2112 二分+dinic
题意:给出N,C,M,N是挤奶器的数量,C是奶牛的数量,M是每个挤奶器最多给多少只奶牛使用。给出一个(N+C) * (N+C)的矩阵,代表挤奶器和奶牛之间的距离,0代表无法到达,这个坑了我好久。问:如何在满足最大流的情况下使某个奶牛走的最长距离最短。思路:先跑一边floyd,dis[][] = 0 ,无法到达,所以需要特判,这里WA了5 6 次。二分边的长度,每次建一次图,满足小于原创 2013-04-26 20:49:19 · 1021 阅读 · 0 评论 -
POJ 1637 混合图求欧拉回路 最大流实现
前面讲过了无向图,有向图求欧拉回路,欧拉通路的做法。可以直接根据度数来判断,当然前提是这是一个连通图。这道题既有无向边,又有有向边,然后求欧拉回路。采用的方法是最大流。具体处理方法。首先,我们对无向边,进行随意定边。定完边之后,求出每个点的出度入度。如果某个点的出度入度之差为奇数,那么就无法形成欧拉回路。接下来所有的点的度数之差都是偶数了,对于有向边,我们不需要处理。对于无原创 2013-07-29 14:15:04 · 1083 阅读 · 0 评论 -
POJ 1698 最大流
题意:一个演员,给你N部电影,每部电影必须在M周前完成,每部电影一周有固定的拍摄时间,这个演员一天只能拍一部,问这个演员能否拍所有的电影。思路:这题可以用二分匹配,匈牙利算法搞,应该很快,我用了网络流,熟练一下模板。建图方法。S - MOVIE ,权值是电影的拍摄次数。MOVIE - 天数 ,将MOVIE和能拍摄的天数连起来,权值是1。天数 - T ,将所有天数和T连起来,权值原创 2013-04-26 22:05:47 · 968 阅读 · 0 评论 -
POJ 1459 Power Network 网络流基础题
题意:输入:N个点,N1个发电厂,N2个用电厂,M条路。输入M条路,s,e,l.代表点s-e的容量是l。输入N1个发电厂,s,l.代表s产生l的电。输入N2个用电产,s,l,代表s用掉l的电。Sample Input2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)207 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,原创 2012-08-18 21:12:32 · 1085 阅读 · 0 评论 -
Edmonds_Karp 算法 (转)
找了好久终于在这个牛这里找到为什么反向边要加回流量的原因了,因为是初学教程,所以我会尽量避免繁杂的数学公式和证明。也尽量给出了较为完整的代码。本文的目标群体是网络流的初学者,尤其是看了各种NB的教程也没看懂怎么求最大流的小盆友们。本文的目的是,解释基本的网络流模型,最基础的最大流求法,即bfs找增广路法,也就是EK法,全名是Edmond-Karp,其实我倒是觉得记一下算法的全名和来历可以不转载 2012-08-18 16:57:40 · 3846 阅读 · 0 评论 -
POJ 3189 枚举+最大流判可行性
这题即使不是我做过最坑的题,也是我今年遇到的有数的几道恶心题。题意思路什么的都简单不叙述了。主要讲一下这题坑的地方。那就是。。。如果你边的数组开小了,那么就是TLE。没错,就是TLE。这题我昨晚交了50发,一直T,我从头到尾把DINIC代码改了10遍以上,后来改的我一点脾气都没有了。今天早上又来了10来发,还是T,我就从头开始写了一遍。这次抱着爆搞的心态,数组都开超大,没想到A原创 2013-05-15 11:20:28 · 1033 阅读 · 1 评论 -
POJ 3422 费用流
这题和HDU 3376类似。只不过HDU那题是从左上走到右下,再走回来。这题是从左上到右下走K次。只是在建图上有略微的区别。建图:S -> 1 ,流量K,费用0,同理n * n + n * n -> T 。拆点i -> i' ,流量1,费用为该点的值,需注意因为该题点可以重复走,但是第二次走该点时值为0,所以需要再加一条流量k-1,费用0的边。如果i,j可达,i' -> j ,流量原创 2013-05-14 12:54:36 · 883 阅读 · 0 评论 -
HDU 3251 最小割
题意:国王赏赐给你一些城市,但是他不希望可以从首都(编号1)到达任何你的城市。有m条边连通各个城市,每条边有一个值,为毁掉这条边需要的花费,你的每个城市有一个收入。问,最后毁掉哪些边,可以使你的收入最高。思路:将每条边的价值看成流量,连接两个城市,每个你的城市的收入看成流量,与汇点相连。源点为首都(编号1) ,求1-T的最小割。#include #include #includ原创 2013-05-09 22:54:27 · 1038 阅读 · 0 评论 -
HDU 1733 最大流
题意:给一张n*m的图,#为墙壁,不可达,X为人,@为大门。问所有人到达大门的最短时间。在任意时间,每个点只能站一个人,大门一次也只能通过一个人。思路:枚举时间,每个时间建一次图,跑一次最大流,当最大流等于人数时,则该时间即为最短时间。关于建图,将每个点拆点。设置一个源点S,汇点T。当是点i是X时,S -> i ,流量为1 。任意时间ti。当点i不是#时,i + ti * n *原创 2013-05-07 21:03:49 · 924 阅读 · 0 评论 -
HDU 3491 最小割
题意:有n个城市,每个城市有一定数量的警察,有一群小偷,从城市S,到T,问最少需要多少警察可以使小偷到不了T城市。将每个城市的警察数量看成流量,那么问题就转化成求S - T的最小割。将每个点拆成i , i + n ,流量是该点的值.然后跑一次最大流就可以了。最大流最小割定理:任意一个流网络的最大流量等于该网络的最小的割的容量。#include #include #inclu原创 2013-05-05 23:40:55 · 988 阅读 · 0 评论 -
HDU 3376 费用流
题意:给你一个矩阵,问从左上走到右下再从右下回到左上,每个点只能走一次,问最大值是多少。思路:一看就知道是费用流,但是在建图这里卡住了。因为一开始不知道怎么从右下重新回到左上。写了很久建图的过程,最后挂了 。然后参考了别人的图,发现只要在插入一个源点与起点连接,容量是2,费用是0,终点与汇点相连,容量是2,费用0。这样就能控制来回两次的问题。关于建图,将每个点拆成i , i + n *原创 2013-05-05 21:44:28 · 1093 阅读 · 0 评论 -
HDU 3416 spfa + dinic
题意:求最短路的条数。思路:先求正反两次spfa,然后取最短路上的边加入到图中,跑一次dinic求出最大流即可。先说取最短路上的边。假设s是起点,t是终点,如果dis[s][i] + dis[j][t] + w[i][j] == dis[s][t] ,那么这条边(i,j)就在最短路上。将(i,j)加入图中,容量是1.最大流问题。从s到t一个流就代表一条最短路, 所以最大流就是其原创 2013-04-29 22:58:19 · 881 阅读 · 0 评论 -
HDU 3488 最小费用最大流模板
题意:给你N个城市,M条路,问怎么走,可以走完所有的城市并且费用最少,每条路必须是环路才能走。思路:这道题可以说是KM算法的入门题了。我用费用流来实现了一下。速度比KM慢了不只一点点。。建图:将每个人拆成两点,S -> i -> i + n -> T 。S -> i ,费用0 ,容量1 .i -> i + n ,费用为输入值,容量1 .i + n -> T ,费用0,容量1.原创 2013-04-29 18:11:36 · 1244 阅读 · 0 评论 -
POJ 2536 二分匹配 匈牙利算法 || 网络流
题意很简单,不叙述了,我分别用二分匹配和最大流实现了一下这道题,算是对前面所学知识的一次综合运用吧。这是二分匹配:#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.原创 2013-04-27 12:23:07 · 910 阅读 · 0 评论 -
POJ 2455 dinic
不想说题意了 。作法和POJ 2112相同。但是TLE 10+。。。其实一开始我也没注意数据,但是TLE之后才发现N = 200 ,E = 40000 ,dinic的复杂度是 N * N * E ,这样就8E了。。就TLE了。最后翻了下DISCUSS,发现数据还是没那么变态的,但是算法得加优化,这道题也加深了我对dinic算法的理解。刚才把前面做过的网络流代码都加了这个优化的判断,发现原创 2013-04-27 11:02:50 · 943 阅读 · 0 评论 -
UVALIVE 4819 最大流
题意:有N场比赛,每场比赛需要一定数量的题目数,现在有M个题目,每个题目只能提供给特定的几场比赛,并且一次只能在一场比赛中出现。问最多可以举办多少场比赛。思路:因为N = 15 , 所以直接二进制枚举举办的比赛的情况,然后对于每种情况建图,S - >题目,流量1题目 ->比赛,流量1比赛->T,流量为该场比赛需要的题目数。每次都跑最大流,看是否等于所需的题目数,然后更新答案原创 2013-10-07 20:12:08 · 990 阅读 · 0 评论