![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
时雨晴天
PhD毕业,正在寻找下一个人生目标,愿求文武双全之道。
展开
-
网络流 费用流 模板 ISAP+SPFA+ZKW
7年前的文章,2020年4月20日重新发布。原创 2020-04-20 08:16:26 · 3236 阅读 · 0 评论 -
Poj 3692 & Hdu 2458 (08 合肥Online 二分图 最大团)
个人的理解:(1)什么是最大团?在图中选出一些点,使得这些点两两相邻,则这些点构成的集合称作团。包含顶点数最多的团称作最大团(这个定义只是我的理解。。)(2)什么是补图?对于图G我们有相应的图G',在G中,若没有边(u,v),则在G'中有边(u,v);在G中有边(u,v)则在图G'中没有边(u,v)。我们称G'为G的补图。原创 2014-07-06 17:20:50 · 1124 阅读 · 0 评论 -
稳定婚姻问题 Poj 3487 The Stable Marriage Problem + Hdu 1522 Marriage is Stable (二分图稳定匹配)
貌似又叫延迟认可算法?问题模型及解答方法可以参考:稳定婚姻问题[0]引言 什么是算法 如何寻找稳定的婚姻搭配大学招生问题模型也可以参考这个。Poj 3487 The Stable Marriage Problem#include #include #include #include using namespace std;const int N=30原创 2013-12-17 23:43:49 · 1610 阅读 · 0 评论 -
LightOJ 1011 Marriage Ceremonies (二分图最优匹配 状态压缩+记忆化搜索)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1011题意:n男n女要结婚,给出好感度矩阵,i行j列表示i男对j女的好感度,求一夫一妻结婚后总的最大好感度。思路:套了个KM算法的模板0.004s直接秒了……然后觉得可以用状态压缩+记忆化搜索来练练手,结果跑了0.256s。。。网上貌似还有用费用流做的。#includ原创 2013-11-06 21:44:41 · 1020 阅读 · 1 评论 -
Poj 1486 Sorting Slides + FOJ1202 信与信封问题 (二分图的必须边)
理论:http://hi.baidu.com/wrpnjmkfhgbimpq/item/e8402237ef272afbdf222100步骤:1:求最大匹配,匹配边集合E2:删除E中的一条边e,以e的一个端点找增广路,若不能找到增广路则e是必须边3:恢复原图以及E,继续步骤2,直到E中的每条边都被删除过Poj 1486 Sorting Slides 题意:一原创 2013-08-03 11:17:13 · 1237 阅读 · 0 评论 -
二分图水题整理 Poj 2060 + 1466 + 2771 + hdu 1150 + 1151
Poj 2060 Taxi Cab Scheme题意:在一个矩形城市里面,有间出租车公司收到翌日的预订行程M个,每个给出起点、终点坐标,两个地点之间的车程就是那两个点之间的曼哈顿距离,车起码要在一个行程的出发时间前一分钟到起点。求最少要多少出租车才够完成所有预订?分析:记A,B是两个行程的起点,A',B'分别是终点,假如由A'到B的时间还在B的规定时间前,那么要走完AA',原创 2013-08-02 22:49:55 · 969 阅读 · 0 评论 -
Poj 3041 Asteroids + Poj 2226 Muddy Fields(二分图与一类选方格题目)
Poj 3041 Asteroids思路:把方阵看做一个特殊的二分图(以行列分别作为两个顶点集V1、V2,其中| V1|=| V2|)然后把每行x或者每列y看成一个点,而障碍物(x,y)可以看做连接x和y的边。按照这种思路构图后。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。.#include #include const int原创 2013-08-02 21:58:00 · 1420 阅读 · 0 评论 -
Poj 2594 Treasure Exploration + BZOJ 1143 祭祀 river (Floyd+二分图)
两道解法一样的题一起总结Poj 2594 Treasure Exploration题意:派机器人去火星寻宝,给出一个无环的有向图,机器人可以降落在任何一个点上,再沿着路去其他点探索,我们的任务是计算至少派多少机器人就可以访问到所有的点。有的点可以重复去。思路: 这是个最小路径覆盖问题,但是因为有的点可以重复访问,所以最小路径是可以相交的,我们就用传递闭包建立新图(G’),转化为一般原创 2013-08-02 21:45:57 · 1186 阅读 · 0 评论 -
二分图最佳匹配 KM算法 Hdu2255奔小康赚大钱 + Poj 3565 Ants
理论:http://blog.sina.com.cn/s/blog_691ce2b701016reh.htmlhttp://philoscience.iteye.com/blog/1754498写模板的时候参考了上面两篇博文中的写法。Hdu 2255 奔小康赚大钱#include #include #include const int N=310; //每个集合的最大点原创 2013-08-02 21:35:40 · 1096 阅读 · 0 评论 -
二分图学习小记 Poj 1274 The Perfect Stall
记录匈牙利算法的模板。貌似二分图用网络流做也挺方便。Konig定理:最小顶点覆盖学习小记 - 将狼踩尽 19891101 - 博客园http://www.cnblogs.com/jianglangcaijin/articles/2745325.html最小路径覆盖学习小记 - 将狼踩尽 19891101 - 博客园http://www.cnblogs.com/jianglang原创 2013-07-31 08:48:25 · 829 阅读 · 0 评论 -
Hdu Base Station (网络流最大权闭合图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3879题意:要在 n 个城市修建电台,已知修建每个电台的费用。然后有 m 行,每行三个数 a,b,c,表示如果城市 a 和城市 b 都修建了电台,将带来 c 的收益。求选择一些城市修建电台使得总收益最大。 (0思路:典型的最大权闭合图。原理参见:http://www.byvoid.com/blo原创 2013-03-04 22:13:50 · 707 阅读 · 0 评论 -
Hdu 1569 方格取数(2) (网络流最大点权独立集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1569思路:首先黑白染色,源点到黑点连条边,值为格子数值,然后白色点到汇点也连条这样的边,然后每个黑点对与其相连的白点连条无穷大的边,然后求个最小割,答案就是所有格子数值和减去这个最小割。#include #include #include using namespace std;co原创 2013-03-03 21:19:45 · 626 阅读 · 0 评论 -
网络流 学习小记2
这回主要学习了:最大权闭合图,二分图最小点覆盖和最大独立集。看了 胡伯涛 的《最小割模型在信息学竞赛中的应用》,似懂非懂地理解了基本思想……最小点权覆盖 && 最大点权独立集 zoj 3165 hdu 1565 poj 2125 - Because Of You - 博客园http://www.cnblogs.com/wuyiqi/archive/2012/07/16/2594097.原创 2013-03-03 01:48:39 · 640 阅读 · 0 评论 -
Poj 3281 Dining (拆点网络流)
题目链接:http://poj.org/problem?id=3281题意和思路都和我博客的这篇文章几乎一样:http://blog.csdn.net/whyorwhnt/article/details/8628346这里有一组测试数据:http://poj.org/showmessage?message_id=124547#include #include #include u原创 2013-03-02 16:36:19 · 591 阅读 · 0 评论 -
Hdu 4292 Food (2012成都赛区网络赛第五题,拆点网络流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4292题意:有 F 种饮料、D 种食物。每种饮料可以满足 fi 个人,每种食物可以满足di 个人。有 n 个人,每个人得到一个饮料和一个食物才算这个人的要求被满足。给出每个人想要得到的饮料和想要得到的食物。求最多被满足的人?思路:题目给出的限制有以下几个:(1)食物、饮料都可以提供给有限原创 2013-03-02 10:42:39 · 969 阅读 · 0 评论 -
Poj 1459 Power Network (多源多汇最大流EK)
题目链接:http://poj.org/problem?id=1459题意:大意是在一个电力网中有n个节点,其中有np个发电站,nc个消耗点,剩下的为中转站,m条电缆。每条电缆都有传送电力的限制。思路:多源多汇最大流问题。思路参考了:http://blog.csdn.net/lyy289065406/article/details/6647060#include #inc原创 2013-03-01 20:33:39 · 1033 阅读 · 0 评论 -
Poj 1273 Drainage Ditches (最大流EK+ISAP)
题目链接:http://poj.org/problem?id=1273题意:下雨的时候约翰的田里总是积水,积水把他种的三叶草给淹了,他于是做了若干排水沟,每条沟在起始处安置一个阀门来控制这条沟的最大排水量,现在给出沟的条数以及阀门的个数。并给出每条沟的最大排水量。约翰的田里的积水处是阀门1,排出水的位置是最后一个阀门。求约翰在处理积水时的最大排出量。思路:最大流。使用了EK和ISAP两种方原创 2013-02-28 21:50:58 · 1314 阅读 · 1 评论 -
网络流学习小记
看代码的时候深深地感受到学习过pascal语言是多么幸运……[图论/迭代优化/动态规划]最大流问题 Edmonds-Karp算法(附POJ 1273解题)http://www.mysjtu.com/page/M0/S535/535797.html算法艺术——网络最大流 - Rachel Zhang的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn原创 2013-02-27 22:39:28 · 774 阅读 · 0 评论 -
Poj 2749 & Hdu 1815 Building roads (2-SAT + 二分 建图)
以下分析摘自:http://www.cnblogs.com/wally/p/3251968.html题意:给出n个牛棚、两个特殊点S1,S2的坐标。S1、S2直连。牛棚只能连S1或S2,还有,某些牛棚只能连在同一个S,某些牛棚不能连在同一个S。求使最长的牛棚间距离最小 距离是曼哈顿距离,使最大值最小。思路:二分的经典应用,利用二分将最值问题二分枚举最大值limit,然后重新构图,用2-SA原创 2014-09-02 22:25:20 · 1157 阅读 · 0 评论 -
Poj 2723 Get Luffy Out (2-SAT + 二分)
题意:有2*N把不同的锁,每把锁有一个钥匙,共有2*N 把钥匙。把2*N把钥匙两两配对共分为N组。有个M层楼,每层楼有一个门,每个门上有两把锁,可能是相同的也可能是不同的。 走上某层楼之前,必须要打开这个门上的至少一个锁。从每组钥匙中只能选择一把钥匙,然后用这些钥匙去上这栋楼,问最多能走到几层楼?原创 2014-08-31 22:55:57 · 871 阅读 · 0 评论 -
Poj 3648 Wedding (2-sat 输出方案)
题意:有一对新人结婚,邀请n对夫妇去参加婚礼。有一张很长的桌子,人只能坐在桌子的两边,还要满足下面的要求:1.每对夫妇不能坐在同一侧 2.n对夫妇之中可能有通奸关系(包括男男,男女,女女),有通奸关系的不能同时坐在新娘的对面,可以分开坐,可以同时坐在新娘这一侧。如果存在一种可行的方案,输出与新娘同侧的人。思路:求解的时候去选择和新郎同一侧的人,输出的时候换一下就是新娘同一侧的人。原创 2014-08-31 21:54:57 · 1011 阅读 · 0 评论 -
Poj 3683 Priest John's Busiest Day (2-SAT+拓扑排序输出方案)
题意:有个小镇上有n对夫妻要举办婚礼,每队夫妻都要请镇上的牧师举行一个仪式,但是镇上只有一个牧师,牧师一次只能为一对夫妻做仪式。已知每队夫妻的婚礼的起始t1和结束的时间t2, 他们举办仪式的时间是d,仪式只能在婚礼开始的前d时间举行或者在结束之前的d内举行。问牧师能不能合理安排,使得每对夫妻都能举办仪式?对于每一对夫妻,他们要么在开始时做仪式,要么在结束时做仪式,所以是2-SAT模原创 2014-08-11 21:56:31 · 889 阅读 · 0 评论 -
Poj 3905 Perfect Election(2-sat 可行性判定)
基础2-sat题目这题有一个shouhuo原创 2014-08-11 16:52:49 · 874 阅读 · 0 评论 -
ZOJ 3656 Bit Magic (2-sat 可行性判定)
Poj 3678 Katu Puzzle (2-sat 可行性判定) - whyorwhnt的专栏原创 2014-08-11 16:02:43 · 928 阅读 · 0 评论 -
Poj 3678 Katu Puzzle (2-sat 可行性判定)
题意:有一个有向图G(V,E),每条边e(a,b)上有一个位运算符op(AND, OR或XOR)和一个值c(0或1)。问能不能在这个图上的每个点分配一个值X(0或1),使得每一条边e(a,b)满足 Xa op Xb = c思路:每一个点上只能取0或者1,显然是2-SAT模型。关键是怎样建边。对于两个点a和 b, a有两个值a1=0,a2=1, b也有两个值 b1=0, b2原创 2014-08-11 12:55:11 · 874 阅读 · 0 评论 -
Hdu 4115 Eliminate the Conflict (2-sat 可行性判定)
Bob和Alice玩剪刀石头布,一个玩n轮,Alice已经知道了Bob每次要出什么,1代表剪刀,2代表石头,3代表布,然后Bob对Alice作出了一些限制:给m行,每行是a b k,如果k是0,表示Alice第a次和b次出的拳必须相同,如果k是1,表示Alice第a次和b次出的拳必须不相同。一但Alice破坏了这个限制规则,或者输了一局,那么Alice就彻底输了。问Alice可不可能赢原创 2014-08-05 16:23:28 · 913 阅读 · 3 评论 -
Hdu 1824 Let's go home (2-sat 可行性判定)
每一个队伍中,要么队长留下,要么另外两个队员留下,这是一个矛盾对,可以把队长看成一个点,把两个队员也抽象成一个点,把他们进行一个映射, 对于a,b,c, !a->b, !b->a, !c->a, 即f[a] = b, f[b]=a, f[c]=a,然后直接用2-SAT判断即可。建图:对于队员x,有留下(x)与离开(x’)两种状态,于是按照矛盾关系建图。如果一个队有a b c原创 2014-08-05 10:52:39 · 909 阅读 · 0 评论 -
Hdu 3062 Party (2-sat可行性判定)
2-sat的入门题,很简单的模型#include #include #include using namespace std;#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))const int MAXN = 1010;const int VN = MAXN*2;const int EN原创 2014-08-05 10:39:17 · 829 阅读 · 0 评论 -
Hdu 4612 Warm up (双连通缩点+树的直径)
题意:有N 个点,M条边,加一条边,求割边最少。(有重边)思路:先求双连通分量,缩点形成一个生成树,然后求这个的直径,割边-直径即是答案原创 2014-08-01 09:59:22 · 794 阅读 · 0 评论 -
POJ 2117 Electricity (无向图求割点)
题目:对于给出的无向图,删除某个顶点后,会得到多个连通分量。求最多的连通分量数(删除某点后)。每组数据的第一行两个数N和M,表示顶点和边。顶点编号0到N-1。接下来M行,每行一条边。输入以N=M=0结束。每组数据输出一行。1 思路:由于图不一定连通,所以枚举图中每一个连通分量,统计出原图共几个连通分量,再通过求图割点时统计出每个割点能分出多少个连通分量,并统计出最多的数量,再和原图连通分量原创 2014-07-30 21:41:27 · 915 阅读 · 0 评论 -
POJ 1236 Network of Schools (强连通 出度 入度)
题目:N(2=问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 思路:先求强连通分量:1、入度为0的点的个数即为第一个答案;2、第二问也就是在DAG图中,添加多少条边使其成为强连通图入度和出度为0的个数的较大值为第二个答案(强连通原创 2014-07-30 21:27:45 · 791 阅读 · 0 评论 -
POJ 2186 Popular Cows (强连通 出度)
题目:有一群牛,总数为N(NSample Input3 31 22 12 3Sample Output1输入的第一行两个数N和M,M表示以下有M个仰慕关系。(1 思路:先求强连通分量,记录每个强连通分量中节点的个数。最后求出出度为0的强连通分量中的节点个数。原创 2014-07-30 21:21:12 · 755 阅读 · 0 评论 -
2-sat 问题学习小记 Poj 3207 Ikki's Story IV - Panda's Trick (可行性判定)
最近开始学习2-sat问题,上次学习是在刚进实验室的时候,原创 2014-04-08 21:06:30 · 823 阅读 · 0 评论 -
Hdu 4738 Caocao's Bridges (有重边无向图求桥)
2013杭州网络赛的第一题,坑点相当多,貌似这题导致15分钟没有队伍过题……比赛时我负责这道题,WA9次才A。。。。。从边数小于等于点数平方这点来看肯定有重边,需要处理。图不连通,输出0.如果取到的最小值是0的话,要输出1,表示要派一个人过去。#include #include #include using namespace std;#define min(a,b原创 2013-09-17 22:39:00 · 1181 阅读 · 0 评论 -
Poj 1144 Network (割点)
题意:求无向图的割点的个数。输入数据有多组。每组数据的第一行N,代表顶点个数(编号1到N)。以下最多N行,最后一行是一个0。每行第一个数u,以后X(不确定X是多少)个数v,表示边(u,v)。输入以N=0结束。N 思路:Tarjan算法求割点。一个顶点u是割点,当且仅当满足(1)或(2)(1) u为树根,且u有多于一个子树。(2) u不为树根,且满足存在(u,v)为树枝边(或原创 2013-09-08 19:52:13 · 1274 阅读 · 0 评论 -
Poj 2762 Going from u to v or from v to u? (判断图弱连通)
题意:给出T个山洞,对于每个山洞,如果任意选择两点s,e,都满足s可以到达e或者e可以到达s,则输出Yes,否则输出No。思路:强连通分量缩点+拓扑排序。判断图是否是弱连通的,首先求强连通分量,然后缩点,对缩点形成的图最多只能有一个入度为0的点,如果有多个入度为0的点,则这两个连通分量肯定是不连通的。缩点后形成的图形是一个树形结构,入度为0的点是这颗树的根,这棵树只能是单链,不能有原创 2013-09-08 17:16:21 · 897 阅读 · 0 评论 -
有向图和无向图的连通性学习小记 Poj 1269 迷宫城堡
温故而知新。有向图强连通分量的Tarjan算法 - BYVoid强连通的一些定理:1. 有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)2. 有向无环图中所有入度不为0的点,一定可以由某个入度为0的点出发可达。(由于无环,所以从任何入度不为0的点往回走,必然终止于一个入度为0的点)3. 一个顶原创 2013-09-08 17:08:48 · 1702 阅读 · 0 评论 -
拓扑排序学习小记 HDU 1285 确定比赛名次 + HDU 2647 Reward
拓扑排序,以下摘自http://blog.csdn.net/midgard/article/details/4101025:拓扑排序是对有向无环图(DAG图)的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环,则无法表示两个顶点的先后顺序。在现实生活中,也会有不少应用例子,比如学校课程布置图,要先修完一些基础课,才可以继续修专业课。一个简单的求拓扑排序的算法:首先要找到任意入原创 2014-02-25 15:15:06 · 952 阅读 · 0 评论 -
Poj 1041 John's trip (Fleury算法求欧拉回路路径)
题意:给出无向图,每条边有唯一的序号,是否存在欧拉回路,若存在输出边序号最小字典序的路径。思路:Fleury算法求欧拉回路路径,Fleury算法其实就是DFS套了个人名……这里有个介绍http://blog.csdn.net/niushuai666/article/details/6549182依据静态邻接表的特性,从序号大到小建立边,这样即可保证序号最小的边首先访问到#i原创 2014-02-28 21:21:34 · 1019 阅读 · 0 评论 -
Poj 1300 Door Man (欧拉回路 通路 stream处理输入)
之前学习过一次 stream的用法 http://blog.csdn.net/whyorwhnt/article/details/9570813现在才又一次尝试使用。。。。发现还是比单纯模拟简单了一些,getline 这个从群里学到的c++写法也不错。题意:一个豪宅的管家有个粗心的主人,告诉你现在一共有多少个房间,然后会告诉你从哪个房间出发,你的任务就是从出发的房间通过各个房间之间的通道,原创 2014-03-02 21:51:13 · 780 阅读 · 0 评论