一个无向图,问你删除多少点后,可以隔断起点到终点的所有路径?输出字典序最小的删点方案。求最小点割,先拆点,容量为1,普通边容量无穷,最大流即为应删点数。需要求出字典序最小的方案,可以从小到大枚举所有的点,如果当前枚举的点是割点,那么进行标记,同时后面的枚举也不再经过这个点。召唤代码君:#includ...
分类:
其他好文 时间:
2014-07-27 10:32:12
阅读次数:
207
单源点汇点无向图,要阻隔某个点的流量,必须在一个点上消耗一定的价值,问你能否在消耗价值不超过k的前提下,阻隔源点到汇点的流量。直接对于有权值的点拆点,拆后边容量即为点权。其余的点的容量无穷,最大流即可。召唤代码君:#include #include #include #define maxn 555...
分类:
其他好文 时间:
2014-07-27 10:28:42
阅读次数:
212
题意: 一个数字矩阵,可以出发K次,每次可以从右边或者下面走,要求(在收益最大情况下)覆盖全图,不能则输出-1。(规则:每次跳一步的时候若格子数字相等则获得该数字的能量,每跳一步消耗距离的能量)。每个格子走且仅能走一次。
选
显然用拆点为二分图。
一种解法:边(流量,费用)
源点向X部连边(1,0)Y部向汇点连边(1,0)X到Y,若能到,则有边(1,消耗-获得)。...
分类:
其他好文 时间:
2014-07-24 23:15:03
阅读次数:
305
累了就要写题解,最近总是被虐到没脾气。
来回最短路问题貌似也可以用DP来搞,不过拿费用流还是很方便的。
可以转化成求满流为2 的最小花费。一般做法为拆点,对于 i 拆为2*i 和 2*i+1,然后连一条流量为1(花费根据题意来定) 的边来控制每个点只能通过一次。
额外添加source和sink来控制满流为2。
代码都雷同,以HDU3376为例。
#include
#include
#...
分类:
其他好文 时间:
2014-07-23 22:40:08
阅读次数:
560
判断能否从一个点同时找出两条不相交的路径到另外两个点。保证路径不相交,那么需要拆点。然后?好像就没什么了,直接最大流即可。不过,,,不需要求出所有的最大流,只要跑两次EK看看能否增广两次就行了。召唤代码君:#include #include #include #include #define max...
分类:
其他好文 时间:
2014-07-22 00:29:35
阅读次数:
213
给一个DAG图,一个人可以走一条路,或者就在一个点(路径长度为0),问至少需要多少人可以覆盖所有点。
根据二分图的性质:
DAG的最小路径覆盖,将每个点拆点后求最大匹配数m,结果为n-m,求具体路径的时候顺着匹配边走就可以,匹配边i→j',j→k',k→l'....构成一条有向路径。
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-22 00:28:34
阅读次数:
194
题目地址:HDU 4292
水题。
由于每个人只能有1份,所以需要拆点限制流量。建图方法为,建一源点与汇点,将食物与源点相连,权值为食物额数量,将饮料与汇点相连,权值为饮料数量。。然后将人进行拆点为i和i‘,将对应的i与i’连边权值为1,将i与它所对应的YES的食物连边,将i‘与它所对应的YES的饮料连边,一次求最大流。
代码如下:
#include
#include
#include...
分类:
其他好文 时间:
2014-07-18 23:03:52
阅读次数:
281
题目地址:HDU 3435
这题刚上来一看,感觉毫无头绪。。再仔细想想。。发现跟我做的前两道费用流的题是差不多的。可以往那上面转换。
建图基本差不多,只不过这里是无向图。建图依然是拆点,判断入度出度,最后判断是否满流,满流的话这时的费用流是符合要求的,输出,不能满流的话,输出NO。
代码如下:
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-07-18 21:28:17
阅读次数:
193
题目地址:HDU 3277
这题跟这题的上一版建图方法差不多,只不过需要拆点。这个点拆的也很巧妙,既限制了流量,还只限制了一部分,以前一直以为拆点会全部限制,原来也可以用来分开限制,学习了。
建图方法为:建一源点与汇点,将女孩进行拆点,拆成i和i+n,将i与源点连边,权值为mid,将i与i+n连边,权值为k,再将男孩与汇点连边,权值为mid,这时可以配对的就将i与相应的男孩连边,权值为1,不能...
分类:
其他好文 时间:
2014-07-18 14:11:49
阅读次数:
281
题目要求必须按照L O V E 的顺序行走,且必须至少有一个完整的LOVE,说明可以经过同一个点多次
对每个点拆分为4个点,分别为从L,O,V,E到达。起始点看做是从E到达的
spfa时发现当前点距离相同,比较经过的边数,此时若边数更大,也要入队列!因为要更新后面的点经过的边数
trick 是点可以有自环,当N = 1时
1 4
1 1 1 L
1 1 1 O
1 1 1 V
1 ...
分类:
其他好文 时间:
2014-07-13 00:11:22
阅读次数:
356