图论-二分图
文章平均质量分 68
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
hdu3468 Treasure Hunting(二分图)
在一个n*m的格子里面,有一些宝藏和一些聚集地; ‘.’ :表示空地,可以通过; ‘*’ :表示宝藏,可以通过; ‘#’ :表示墙,不能通过; ‘A’ ~ ‘Z’ || ‘a’ ~ ‘z’ :表示聚集地;聚集地具有等级,就是他们的字典序;从最低字典序聚集地进入,从最高字典序聚集地出。且每次只能从一个聚集地出发去偷宝藏后要到其字典序后一个聚集地去,例如:A->x1->B->x2原创 2016-07-08 15:53:07 · 450 阅读 · 0 评论 -
poj1486 Sorting Slides
题目大意就是给定n个slide和n个数的坐标,问是否能唯一确定每个slide又个唯一的数字,数字只能用一次。首先一个数字能代表一个slide的前提就是这个数字在slide内,预处理下就好了。然后就是先跑遍二分图,进行一次匹配,在看每个匹配是不是一定只能这样,也就是说slide A是不是只能与数字B匹配。。。判定的条件就是先去掉匹配关系与可匹配关系(图),然后看是不是这种更改后slide原创 2016-02-06 14:57:13 · 359 阅读 · 0 评论 -
poj2724 Purifying Machine
每个奶酪上面n位二进制,含有0,1,*三种符号,现在有m个奶酪,我们需要用一个机器来clear这些奶酪,clear的条件就是机器上的n位二进制与奶酪上面的二进制相同,但是*可以代替0或1,所以这样的话只要两个奶酪的只有一个位置不同的话,还是可以用同一个改变clear两个奶酪了,所以这样就建边。然后就是最小边覆盖。/****************************************原创 2016-02-05 20:42:43 · 630 阅读 · 0 评论 -
lightoj1300
思路:显然是和边双连通分量有关的,所以只需要在双连通分量中找奇环(二分图染色),如果找到,这个连通分量中的点都是满足的。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include原创 2015-12-01 10:20:39 · 300 阅读 · 0 评论 -
poj3020(最小边覆盖)
思路:要安放一下类似雷达之类的东西,相邻的一个点会被覆盖,但是,只能覆盖一个,不管是东西南北,那么另外一个被覆盖的点就不用在安放雷达了,求最少的安放雷达的数目;显然就是最小边覆盖问题;对每个坐标表定一个固定的数字,然后根据题意建图;题目链接/*****************************************Author :Crazy_AC(JamesQi原创 2015-09-23 17:02:50 · 523 阅读 · 0 评论 -
poj2226(最小点覆盖)
思路:前面有个类似的模型,就不多说了;(此等二分图经典模型)ps:link & vis数组开小了,然后就是各种悲剧的事情;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************原创 2015-09-21 17:13:29 · 364 阅读 · 0 评论 -
LoghtOj1201(最大独立集)
思路:一哥们要去杀人,这些人之间呢有相互认识的,也有不认识的,如果杀了A,那么认识A的人就回得到消息然后有所防范,问最多能杀多杀人,这显然就是最大独立集。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :***************原创 2015-09-21 15:41:26 · 415 阅读 · 0 评论 -
hdu3861(tarjan缩点 + Hungary)
题意:给出一张有向图,要求你将这些点进行划分,划分依据如下1.如果两个点互相可达,那么这两个点必须在同一个集合中;2.同一个集合中的两个点u,v要满足要么u->v || v->u;3.一个点只能被划分到同一个集合;问最少能划分成几个集合思路:对于条件一就是强联通分量;对于条件2,3得话就要球出来最小路径覆盖,所以可以将所有的强联通分量进行缩点,桥作为连接,然后匈牙利一下,求原创 2015-09-20 00:30:43 · 472 阅读 · 0 评论 -
uva11419 SAM I AM
这题值得一做,,,路径的打印值得一学。// #pragma comment(linker, "/STACK:1024000000,1024000000")/*这题是最小点覆盖问题,然后确定炮弹放的位置。显然先跑遍匈牙利,然后确定位置。跑完匈牙利后,对于左右两个集合而言,如果x集合中的点x[i]没有匹配,就是linkx[i] == -1,那么有两种情况,第一种是根本就不存在y集合中的点原创 2015-11-09 10:23:40 · 692 阅读 · 0 评论 -
poj2771 Guardian of Decency
最大团,建立补图。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:10240原创 2016-02-06 17:20:28 · 409 阅读 · 0 评论 -
poj2594Treasure Exploration
因为点可以重复经过,所以要扩展边以把间接的变成直接的。。。。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(原创 2016-02-06 17:42:30 · 376 阅读 · 0 评论 -
lightoj 1403 - Air Raid
题目大意就是说一个无环DAG图,现在有空降兵可以从天而降。图中有n个节点,每个节点必须经过且只能经过一次。一个士兵可以沿着路一只走到尽头。。。显然就是最小边覆盖,与二分图的最大匹配有关,还是很简单的。有道升级版本lightoj1429。/*****************************************Author :Crazy_AC(JamesQi)原创 2016-01-31 17:17:15 · 382 阅读 · 0 评论 -
poj3189 Steady Cow Assignment(枚举+多重匹配)
有n头牛和b个棚,每个棚有容量上限。每头牛对每个棚有个喜欢程度,现在给牛分配住棚且棚中牛的数目不能超过该棚的上限。 先输入n,b。然后n行,每行有b个数字x[j],表示该头牛对棚子x[j]的喜欢程度是j。现在求一种分配方法使得任意两头牛对所在棚的满意程度的差值最小,输出最小差值。方法:枚举棚子满意度的上下限[low, high],然后做多重二分图匹配。const int maxn = 1010原创 2016-07-02 22:57:32 · 414 阅读 · 0 评论 -
poj2594(可相交最小路径覆盖)
直接先传递闭包,等同于扩边,最后就是一般最小路径覆盖的做法了。const int maxn = 501;int g[maxn][maxn];int linker[maxn];bool vis[maxn];int n, m;bool dfs(int u) { for (int v = 1;v <= n;++v) { if (g[u][v] && !vis[v]) {原创 2016-07-01 23:57:57 · 387 阅读 · 0 评论 -
uva1459Flowers Placement(二分图+dfs)
/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :给定n行m列的花的摆放方式,要求就是每行每列不出现同色的,求第k字典序的摆放方式。思路:从第一行开始枚举放什么花色,然后就是判断是否和题目的要求,这里的判断方式就是二分图的dfs部分同原创 2016-03-25 15:44:43 · 412 阅读 · 0 评论 -
hdu3081 Marriage Match II
题目大意就是有n对男女,玩儿结婚游戏,要求就是开始每个女生心目中都会有几个心仪的男生,同时呢,好友(girl)心仪的男生也是可以选做自己的boyfriend。每一轮游戏男女配对(只和心仪的)且不于之前配对过的配对,问最多可以玩儿几轮这样的游戏。男女配对显然是二分图,然后就是二分次数k,k必然是大于1而小于n+1的。/*************************************原创 2016-02-03 22:27:33 · 335 阅读 · 0 评论 -
lightoj1150 - Ghosts!
先预处理出来每个ghost到每个human后杀掉他后返回窝的最少时间。然后人份时间上限建图,二分匹配判断匹配数目是否等于human的数目。。。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*******************原创 2016-02-03 22:20:55 · 429 阅读 · 0 评论 -
hdu3861The King’s Problem
题目意思就是一个国家有n个城市,里面的道路都是单向的,现在国王要把国家分割成区域,要求的就是,每个区域里面的点u、v,u到v可达或者是v到u可达。求最少要分隔成几个区域。显然就是最小路径覆盖问题,只是要缩点。/*****************************************Author :Crazy_AC(JamesQi)Time :2015原创 2016-02-01 23:37:20 · 405 阅读 · 0 评论 -
poj3189Steady Cow Assignment
题意:有n头牛,b个牛棚,每头牛心目中对牛棚都有个满意度,而每个牛棚是有容量上限的。问将这些牛全部安排好牛棚后,求其中的最低满意度与最高满意度的差,使得这个差值最小。。。没有二分,TLE成傻逼。。。。。。。对于匹配来说就是个多重匹配。但是建图的话,开始枚举的范围[i,j],然后成傻逼,这里的枚举是n^2的,而且每次枚举后都要来遍建图与匹配,,,,,时间是爆炸的。。。后面两个是不能省原创 2016-02-01 22:02:49 · 419 阅读 · 0 评论 -
lightoj 1429 - Assassin`s Creed (II)
题意就是一个组织要杀人,道路是单向的,一个杀人者可以沿着某条路把所经过的点上的人全部杀完,点是可以重复经过的。问最少需要几个杀人者可以把所有的n个点上的人杀完。。。这题的难点在于点可以重复经过,而且图中含有环。。。。。环其实容易想到缩点,,,只是点重复经过怎么处理,因为要用二分图的性质的话,里面的边石不能重复的,所以这里的处理就是添加边进去,如果原图中u到v是可达的,那么u到v就新建一原创 2016-01-31 17:26:18 · 730 阅读 · 0 评论 -
hdu1669杰米的电话联系人(多重匹配)
题意:杰米想给手机里面的联系人分组,问最大分组中的规模最小,给了每个联系人可能所在组的编号;思路:显然是一个多重匹配问题,x(联系人),y(组编号);一般来说,对最大限制的选取(这里是“最大分组中的规模最小”)通常采用二分搜索来降低搜索空间;具体搜索做法和Hungary()差不多,变的就是cy[maxn]变成cy[maxn][maxn],同时用num[i]来表示与y[i]匹配的x[...]的数原创 2015-09-18 19:34:58 · 617 阅读 · 0 评论 -
hdu3605(Easy MulMatch)
题意:现在要将n个人移送到m个star去,但是由于环境的原因呢,对于每个star并不是每个人都可以适应上面的环境的,同时呢,每个star有人数上限。思路:从上面来看,也就是每个star可以有多个人,但是一个人最终只能去1个star,这就和二分图的多重匹配吻合了。/*****************************************Author :Crazy_AC(原创 2015-09-18 19:56:59 · 397 阅读 · 0 评论 -
hdu2117二分图最大匹配
思路:裸得要命QAQ题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/ST原创 2015-09-11 16:33:21 · 410 阅读 · 0 评论 -
hdu1151最小路径覆盖
思路:一个士兵只能访问邻近的点,但是不能回头,相当于是访问一条边,问最少需要的士兵数;显然就是一个最小路径覆盖问题;ps:最小路径覆盖数 = 顶点数 - 最大匹配数;时间效率:O(V * E)题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2原创 2015-09-11 12:31:34 · 324 阅读 · 0 评论 -
hdu2444二分图判定 + 最大匹配
思路:用染色法进行二分图判定,相邻的两个点间染不同的颜色,如果遇见相同的颜色,则不是二分图;不是二分图的话输出No,否则跑Hungary求最大匹配;点击打开链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :******原创 2015-09-11 19:50:00 · 500 阅读 · 0 评论 -
hdu2063二分图
思路:最裸二分图,没有之一。。。。题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linke原创 2015-09-11 13:10:14 · 382 阅读 · 0 评论 -
poj3698(二分图最大匹配 + 拆点)
思路:把电影拆开,,,对于每部电影的去的天数呢分开,,(1...d1)(d1 + 1.....d1 + d2)....入上面这种拆点。然后就是每周的周几可以去,就把周扩展成天:比如说1表示第一周的周一,8表示第二周的周一,如此类推,用上下这种扩展的方式简图,,,只要最后的匹配数目等于总的天数,那么就是可以的。点击题目链接/****************************原创 2015-09-25 11:50:23 · 609 阅读 · 0 评论 -
poj1548(最小路径覆盖)
思路:最小路径覆盖是很容易想到的(本题就是求最小的路径条数覆盖所有的点),关键是如何建图,其实也不难想到,对于当前点,如果后面的点它能够到达,那么就连边。最小路径覆盖=顶点数-最大匹配。点击题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015原创 2015-09-25 16:02:36 · 558 阅读 · 0 评论 -
hdu1179最大匹配
思路:太模板化了,,,好不习惯QAQ题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(link原创 2015-09-11 12:56:07 · 351 阅读 · 0 评论 -
hdu498二分图(Hungary)
思路:题目读完后就知道了,枚举每个数字,然后相同数字的建边,Hungary() 题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************//原创 2015-09-11 00:06:41 · 378 阅读 · 0 评论 -
Hungary模板(DFS版本)
//在主函数中调用Hungary()函数,这个函数的返回值就是最大匹配数目;//Hungary的算法用力就是寻找增广路径,这个有依赖于Berge定理和Hall定理;//Berge定理:M是图G = (V,E)的最大匹配当且仅当G中不存在M的增广路径;//Hall定理:二分图G = (X,Y;E)中,存在一个匹配M,使得X中所有的点都被M匹配当且仅当对于任意S属于X,都有|N(S)|>=原创 2015-09-07 12:55:08 · 422 阅读 · 0 评论 -
hdu1350 && 1960最小路径覆盖
分析:一个出租车公司有M个预约,每个预约的具体信息占一行,例如:XX:YY a b c d的形式;这个预约需要花的时间等于 |a - b| + |c - d|,当然开始时间加上花的时间就等于结束时间;问最少需要派多少辆车就可以完成任务了;我们很容易想到一辆车完成这个任务后可不可以继续完成另外一个任务,只要时间允许?这里的时间判断就是前一个任务完成后+到达下一个任务的起点的时间是否小原创 2015-09-15 14:03:46 · 388 阅读 · 0 评论 -
hdu2507二分图 + 打印路径
思路:对每个格子进行编号,然后在标记哪些格子是可以链接的,人后就是Hungary()的事情了;这个应该是特判的;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :**********************************原创 2015-09-15 13:09:50 · 525 阅读 · 0 评论 -
hdu3768最大独立集
题目自己读就好了;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:10240原创 2015-09-16 21:37:57 · 438 阅读 · 0 评论 -
hdu2389二分图匹配
思路:只需要判断人到每个放伞的位置花的时间和离下雨的时间,看是否可以建边;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma c原创 2015-09-16 20:21:05 · 384 阅读 · 0 评论 -
hdu1045二分匹配(难在建图)
思路:这题是一个经典的二分图匹配;图中‘X’表示wall,‘.’表示空地可以放置blockhouse,同一条可达线(中间没有wall)上只能有一个blockhouse,显然这样的话这一段空间就只能放一个了,行与列都是如此;所以就可以对这种段进行缩点,然后进行二分匹配就好了;/*****************************************Author :Crazy原创 2015-09-14 17:57:57 · 531 阅读 · 0 评论 -
hdu2845二分图 Hopcroft-Karp Algorithm
思路:模板题就不多说了;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:10原创 2015-09-15 23:37:45 · 494 阅读 · 0 评论 -
Hopcroft-Karp算法
Hopcroft-Karp 算法:对匈牙利算法每次DFS只能寻找一条增广路径进行了优化。每次BFS,可以DFS多次寻找条增广路。在每次DFS寻找增广路的过程用,因为都是沿着分层图往下增广的,所以可以提前避免一些没有必要的分枝路径搜索。时间复杂度分析:(引用维基百科)在霍普克洛夫特-卡普算法中,我们在增加匹配集合M时,每次寻找多条增广路。可以证明[ ( ´◔ ‸◔`) 不会证明 ],原创 2015-09-07 13:22:03 · 1600 阅读 · 0 评论 -
hdu3118二分图性质的应用
思路:题目要求去掉多少条边使得图中不会有奇数环,等效求去掉多少条边使得图成为二分图,因为二分图不好有奇数环;所以我们最后就枚举点的所属集合,如果某边的两个点同属于一个集合,显然这条边是不能要的,这条边可能导致形成奇数环,枚举完后其实偶数环是可以判断不被删除的,因为所有的情况中,一定会有一种情况是偶数环中的任意边的两点分属不同集合;/*******************************原创 2015-09-14 20:09:02 · 624 阅读 · 0 评论 -
hdu1258简单二分图匹配
/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,10240原创 2015-09-15 14:47:05 · 495 阅读 · 0 评论