ACM_网络流
luke2834
A junior researcher~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ1273 最大流模板题 初学网络流~
题意 不细说了,就是源是1,汇点是m的最大流模板 思路 初学网络流,拿这题练练手。 总结下EdmondsKarp算法几个要注意的点: (1)算法本质就是利用BFS不停地找增广路,直到找不到为止。 (2)每次BFS后更新增广路时,一定注意减去或加上的都是最后Terminal得到流量。 (3)用连接表存的时候,为了原创 2015-03-12 18:38:05 · 775 阅读 · 0 评论 -
POJ3057 Evacuation 最大流+二分答案
题意 在一个用矩阵描述的房间里,每个非墙位置都有一个人 矩阵外侧一圈,是墙或者门 每个人移动一格的时间为1,但是每个时刻通过门的人数只能为1 问你最快所有人出房间的时间为多少 思路 首先,我们很容易想到,给你时间t,看能不能出门,这样可以二分求解 如果知道用网络流解该题,这个题的难点就在乎于如何表达每个时刻只能过1人这个信息 把时间拆开,每个门和每个时刻组成一个二元组,那么通过这个二元组的流量最多原创 2016-04-10 07:33:30 · 874 阅读 · 0 评论 -
POJ2135 Farm Tour 无向图最小费用流
题意 给你一个无向图,问你从1号节点到n号节点,再从n号节点返回1号节点,且中间不走重复路的最短路径。 思路 开始的简单思路肯定是,先求一个最短路,再删除其中的边,然后再跑最短路。 问题是,这样贪心的话,会出现有两个条最短路,我们不知道选哪个好的情况~这样不行 我们想,用最小费用流来求解。 其实1->n和n->1对于无向图来说是没有区别的,那么我们是不是可以认为就是从1->n去两次,那么也就是流量为原创 2016-03-26 11:06:10 · 1830 阅读 · 0 评论 -
POJ3469 Dual Core CPU 最小割求解最小费用划分集合
题意 两个核执行n个模块,每个模块在两个核上运行花费不同 另外,m对模块如果在不同核上运行,会有额外的花费 求解最小花费的划分方式 思路 最小费用划分成两个集合,是经典的题目类型,经常会用最小割求解 可以想象,我们加入一个源点s,一个汇点t,那么求完最小割,从s出可以连到的点是在一个集合,不能连到的在另一个集合,每个边的容量对应费用,那么最小割就是一种最小花费的划分方式了 对于这个题,网络中的点是模原创 2016-04-11 23:24:47 · 502 阅读 · 0 评论 -
POJ3281 Dining 最大流
题意 n头牛,f种食物,d种饮料 每头牛会有喜欢的食物和饮料 每种食物和饮料只能供给一头牛 牛可以喜欢多种食物和饮料 问最多可以让多少头牛同时享受到喜欢的食物和饮料 思路 我们把食物,牛和饮料作为节点,把“喜欢”作为无向边 这样就可以连出一个三阶段的图 如果我们定向这些边,然后把食物和虚拟源点相连,饮料和虚拟汇点相连,边的容量为1,可以通过求解最大流来求解吗? 这样显然还有问题,因为牛的节点其实只能原创 2016-04-02 22:25:31 · 362 阅读 · 0 评论 -
POJ3041 Asteroids 二分图最小顶点覆盖 Dinic求解最大流
题意 一个n*n的矩阵,有k个位置有小行星,一炮可以摧毁一行或一列行星 问最少需要多少炮可以摧毁所有行星 思路 把一行、一列看成节点,矩阵里的一个小行星看成一条边,如行星位置(r,c),则第r行的节点和第c列形成的节点间有一条边。 然后我们的问题就变成了求解该图的最小顶点覆盖 因为行和行的节点之间无边,列和列也一样,因此可以形成二分图,所以用最大流求解即可 实现#include <cstdio> #原创 2016-04-02 21:41:00 · 952 阅读 · 0 评论 -
hdu5556 2015ACM合肥现场赛题 二分图最大独立集
题意 在一个n*m的矩阵中,标记为’.’的为单独的一个点,标记为同一个数字的单元格和在一起是一个点,且是四联通的,为你这样建图之后它的最大独立集。 n,m <= 10,数字数是0~9 思路 枚举0~9哪些放入独立集中,这样有2^10的复杂度 在上述的基础上,建立二分图,具体来说,是数字格的单元格不作为二分图的点加入,是放入独立集的数字格周围的单元格不算做二分图里的点。 剩余的点,i+j 是奇数的作为原创 2015-12-08 08:57:29 · 1288 阅读 · 0 评论 -
hihoCoder 1122 二分图最大匹配 最大流
题意 求二分图最大匹配 思路 没有用匈牙利算法,而是试了试要带去的两个最大流模板。。 就是加一个源点,一个汇点,源到二分图集合1的点加一个流量为1的边,集合1到集合2的边设置为流量1,集合2的点到汇点加入流量1的边 实现 模板1实现 #include <iostream> #include <cstring> #include <cmath> #include <algorithm> #includ原创 2015-12-07 20:39:59 · 716 阅读 · 0 评论 -
POJ 1637 混合图欧拉回路判断 最大流模板
题意 给你一个混合图(有向边+无向边),判断是否存在欧拉回路 思路 设d(i) = 出度(i) - 入度(i)。无向边随意定向,先并查集判连通,判di是否都为偶数,不是则不行。 建图,加入s,t两点,对di>0的,s->i建边,最大流量为di/2,对dit建边,最大流量为-di/2。把随意定向的无向边,加入图中,最大流量为1.跑最大流,如果最后从s出的边都满流,则有欧拉回路。把那些流量为1的边原创 2015-04-01 16:29:41 · 472 阅读 · 0 评论 -
Codeforces 546E Soldier and Traveling 最大流 C#实现
题意 在某个国家有n个城市,他们通过m条无向的道路相连。每个城市有一支军队。第i个城市的军队有ai个士兵。现在士兵开始移动。每个士兵可以呆在原地,或者走到和他所在城市直接相邻的城市 判断移动之后,能不能使得第i个城市恰好有bi个士兵。若可以,需给出移动方式 思路 将源点与各个点相连,容量就是a[i]。 将汇点与各个点相连,容量就是b[i]。 将i与i+n相连,容量是inf,表示士兵可以留在自己的城市原创 2020-02-12 18:34:44 · 648 阅读 · 0 评论
分享