网络流
zyz_3_14159
这个作者很懒,什么都没留下…
展开
-
POJ-2699-网络流,枚举
题目大意:有n个人,两两之间进行比赛,一个如果击败了所有分数比他高的人或者自己本身就是分数最高的人,那么他就是sp,给出所有人的得分情况,问最多有多少个sp; 题目解析:构图,源->人->比赛->汇,源到人的容量就是每个人的得分情况,比赛到汇容量就是1;看到n最多就是10,我们可以枚举sp的个数为x,那么分数高的前x名就是sp,那么枚举人到比赛的时候,如果那个人是后x名,并且它的对手分数高于他,原创 2016-12-10 20:38:46 · 482 阅读 · 0 评论 -
POJ-3422-最大流最小费用
题目大意:给定一张网格图,需要从(1,1)走到(n,n)走k条路,每次走到一个格子上会把它的值变为0并且加到sum上去,问sum的最大值是多少; 题目解析:构图考虑到走一次费用就变成了0,所以一个点要拆成2的点两个点之间有一条边容量为1,另一条容量为k-1,费用为0;因为是最大费用,只要把所有的值变成负的,最后去相反数即可; AC代码: #include #include #incl原创 2016-12-12 22:52:55 · 276 阅读 · 0 评论 -
POJ-2112-网络流,二分,最短路
题目大意:有k个奶牛加工机器和c头奶牛,每个奶牛只能去一个机器,每个机器最多只能加工m头奶牛,并且给出所有点的邻接矩阵,问使得所有奶牛都被加工的时候,其中奶牛走的最远的路最小是多少; 题目解析:源 容量1 ->牛 容量1 -> 机器 容量m ->汇;先用floyd把所有点的最短路求出来,之后二分最长路的最小值即可; AC代码: #include #include #inclu原创 2016-12-04 16:00:53 · 256 阅读 · 0 评论 -
POJ-1274-二分图匹配
题目大意:一个人只能对应一个牛,一个牛只能对应一个牛,问最大匹配是多少; 题目解析:源->人->牛->汇,源到人加边只能加一个,牛到汇也只能加一个; AC代码: #include #include #include #include #include #include #include using namespace std; co原创 2016-12-04 14:43:29 · 167 阅读 · 0 评论 -
POJ-1698-网络流最大流构图
题目大意:有m个猪圈,有n个客户来卖猪,每个人有相应的钥匙,并且买完后可以重新组合新的猪圈,问最后最多可以卖掉多少? 题目解析:因为是有顺序的,所以遍历每个客户所对应的猪圈的时候,如果该猪圈没有被打开过m,就连一条a[i]的边,如果被打开过,就从上一个打开的客户连向这个客户,值为inf,最后每个客户指向汇点即可; AC代码: #include #include #include原创 2016-12-03 22:57:25 · 257 阅读 · 0 评论 -
POJ-2195-最小费用最大流
题目大意:给定一张网格图,每个人需要回到一个房子里并且一个房子只能容纳一个人,问所有人加起来的最短路径是多少; 题目解析:看到匹配,肯定是网络流了,有个坑点,题目说只要进入一个房子就不能走了,照道理有的房子是走不到的应该要bfs,然而并没有,构图简单不多说; AC代码: #include #include #include #include #include #include #includ原创 2016-12-12 16:01:24 · 223 阅读 · 0 评论 -
POJ-1698-网络流构图
题目大意:有一个人想去拍电影,有n部电影,每部电影有可以拍摄的时间和期限,问最后能否拍完所有电影; 题目解析:构图,超级源指向n部电影,每部电影指向可以拍摄的时间,容量为1,最后把所有的时间都指向超级汇; AC代码: #include #include #include #include #include #include #include using namespa原创 2016-12-03 16:55:35 · 234 阅读 · 0 评论 -
HDU-4292-网络流最大流
题目大意:有n个人,f的food,d的饮料,每个人对事物和饮料有偏好,并且如果一个人没有饮料或者事物他就会离开,问最后最多有几个人留下来; 题目解析:开始是超级食物汇点,中间是人,因为每个人最多选一种食物,所以人与自己也要加一条边,最后是超级饮料汇点,最大流EK即可; AC代码: #include #include #include #include #include #原创 2016-12-03 15:35:51 · 262 阅读 · 0 评论 -
POJ-2135-最大流最小费用
题目大意:给定一张无向图,可能有重边,n个城市,m条路,问一个人从1到n再回到1并且不能走过痛一条路两次,问最小费用是多少; 题目解析:构图,源(容量为2,费用为0)->城市(容量为一,费用为cost)->汇(容量为2,费用为1); AC代码: #include #include #include #include #include #include using namespace std;原创 2016-12-12 12:49:18 · 208 阅读 · 0 评论 -
POJ-1459-网络流,EK算法
题目大意:网络流当中的多源多汇求最大流; 题目解析:生成一个超级源,指向所有源,并且生成一个超级汇,使得所有汇都指向超级汇; AC代码: #include #include #include #include #include #include using namespace std; const int inf=0x3fffffff; const int maxn=110; int n;原创 2016-12-02 15:29:18 · 248 阅读 · 0 评论 -
HDU-1532-网络流最大流
题目大意:求两点之间的最大流; 题目解析:思想就是迭代dfs找增广路径,直到找不到位置,注意要更新残余网络; AC代码: #include #include #include #include #include #include using namespace std; const int inf=0x3fffffff; const int maxn=1010; struct node {原创 2016-12-02 14:17:15 · 319 阅读 · 0 评论 -
POJ-2516-最小费用最大流
题目大意:n个商店,m个供货商,给出每个商店需要的货物和每个供货商能提供的货物和供货价格,问要使所有商店都能满足需求是最小费用是多少; 题目解析:构图,对每种货物求一次最小费用最大流,源(费用为0,容量为供货商的持有量)->供货商(费用,容量为inf)->商店->汇; AC代码: #include #include #include #include #include #include us原创 2016-12-11 23:02:30 · 232 阅读 · 0 评论 -
POJ-2455-无向图网络流
题目大意:给定一张无向图,注意可能两点间可能有重边,一个人从地点1到地点n要有t次,问所有路中的最大值最小是多少; 题目解析:首先重边的话图就不可以用邻接矩阵来表示了,要用邻接表来表示,无向图的加边反向边不需要初始化为0应该和正向边一样(看成一对反向边即可);最大值的最小值直接二分即可; AC代码: #include #include #include #原创 2016-12-04 20:59:44 · 1501 阅读 · 0 评论