摘要: 题意:n个人的两两关系矩阵,如果a认识b,则b认识a,且认识有传递性。给出一个s和一个t,问想让s不认识t,最少需要去掉多少人。如果有解,输出字典序最小的解。题解:请特别注意0与NO ANSWER!的区别!具体做法是:拆点限流,先求一次最小割为ans,然后从小到大枚举删除的点,重新建图再做最小割,如果当前结果比ans小,则更新ans,并把这个节点打上vis标记。ps:已经打上vis标记的点不再参与之后重建图时View Code 1 #include <cstring> 2 #include <cstdio> 3 #include <cstdlib> 4 #i 阅读全文
posted @ 2013-01-06 22:14 proverbs 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1 定义欧拉通路 (Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉回路 (Euler circuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉图——存在欧拉回路的图。2 无向图是否具有欧拉通路或回路的判定G有欧拉通路的充分必要条件为:G 连通,G中只有两个奇度顶点(它们分别是欧拉通路的两个端点)。G有欧拉回路(G为欧拉图):G连通,G中均为偶度顶点。3 有向图是否具有欧拉通路或回路的判定D有欧拉通路:D连通,除两个顶点外,其余顶点的入度均等于出度,这两个特殊的顶点中,一个顶点的入度比出度大1,另一个顶点的入度比出度小1。D有欧拉回路(D为欧拉 阅读全文
posted @ 2013-01-06 20:04 proverbs 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个整数区间,每个区间有一个权值,从中取一些区间,使得任意整数点的重叠数不大于K,并且这些区间的总权值最大。ps:区间不能重复选择!题解:经典的建图,表示自己想了好多都没有想到,最后还是lyd给我讲的。。。先离散化,建立边(i,i+1,k,0),i到i+1容量k费用0的边;边(i,j,1,w),i和j为给定区间的左右端点,容量1费用0,最大费用流即可~View Code 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdlib> 4 #include <cstdio> 阅读全文
posted @ 2013-01-06 19:28 proverbs 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 这个题联系的时候没有做出来。最后还是lyd神犇教的。。。我还是太弱了。。每个点拆成一个入点(右边一排)和一个出点(左边一排),源点S向每个出点连容量1费用0的边,每个入点向汇点连容量1费用0的边,如果有高速航道(x,y),注意x<y,那么从x的出点到y的入点连容量1费用为读入权值的边。这样就能够处理所有高速航道了……空间跳跃处理:从S向所有入点连容量1费用为定位费用的边就行了。流过一个点对应的出点不代表经过了这个点,只有流过了这个点对应的的入点才算真正流过了这个点!View Code 1 #include <iostream> 2 #include <algorithm 阅读全文
posted @ 2013-01-06 17:26 proverbs 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 若有向图G的子图V满足【V中顶点的所有出边均指向V内部顶点】,则称V是G的一个闭合子图。其中点权和最大的闭合子图称为有向图G的最大权闭合子图,简称最大权闭合图。最大权闭合图的构图方法如下:建立源点S和汇点T,源点S连所有点权为正的点,容量为该点点权;其余点连汇点T,容量为点权绝对值,对于原图中的边<u,v>,连边<u,v>,容量+∞。定理1:最大权闭合图的点权和 = 所有正权点权值和 - 最小割(最大流)。定理2:上述网络的最小割包含:S到“不在最大权闭合图内的正权节点”的边 以及 “在最大权闭合图内的负权节点”到T的边。定理2的推论:在残余网络中由源点S能够访问到的点 阅读全文
posted @ 2013-01-06 17:19 proverbs 阅读(725) 评论(3) 推荐(0) 编辑