二分图
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
HDU---6029 Graph Theory 【二分图匹配思想相关运用】
是一道水题,前提能读懂题!有许多点,操作从第二点开始,每个点都有以下两个操作 1: 把当前点与前面所有的点相连 2: 不对当前点做任何操作.问在最后的这些边的集合中,能否选择一些边,使得这些边没有公共的点,且所有的点都被这些边所覆盖. 题都读懂了,就好做了赛#include<cstdio>using namespace std;int main(){ int t; sca原创 2017-06-23 09:55:20 · 689 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学 【思维 + 二分图判定】
传送门 题意: 可以占领一点, 然后和这个点相邻的边都被封锁了, 如果在占领的这一点的相邻边的点再次被占领的就会有冲突, 问占领所有的边并且没有冲突最少要占领多少个点.思路: 很明显, 如果我们占领了一个点, 相当于我们把这个点丢到一个集合中, 相邻的点放到另一个集合中, 然后另一个集合中的点的相邻点又可以放在之前的那个集合中了, 因为条件是等价的, 所以着很明显就是判定二分图的过程, 所以...原创 2018-09-11 16:26:55 · 245 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table 【点双联通 + 二分图染色法判奇环】
传送门 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求:1、 相互憎恨的两个骑士不能坐在直接相邻的2个位置;2、 出席会议的骑士数必须是奇数,这是为了让投票表决议题时都能有结果。如果出现有某些骑士无法出席所有会议(例如这个骑士憎恨所有的其他骑士),则亚瑟王为了世界和平会强制把他剔除出骑士团。...原创 2018-02-24 15:01:13 · 395 阅读 · 0 评论 -
HDU 4751 Divide Groups 【判定二分图】
传送门 // 题意: 给定n个人之间的单方面认识关系, 要求把这n个人分到两个集合中, 要求同一集合中的人必须相互认识, 问是否可以做到.// 思路: 很明显的, 这就是判定二分图, 先建图, 只要两个人之间相互认识, 他们之间就没有边, 否则就有边, 然后判定这个图是不是二分图就行啦. 判定二分图就是用染色法, 左边染1, 右边染2. 遇到要染的颜色和该点的颜色不同时就不是二分图了,原创 2018-01-31 20:32:58 · 347 阅读 · 0 评论 -
二分图算法模板以及相关知识(判定二分图)
说说二分图,其实图论的题难点不在用算法,难在如何建图,只有图建好了,剩下的就简单了,在这说说求二分图的算法,即匈牙利算法,其实一点都不难,也很好理解拿笔写写就行了.//板子, 直接套就行/** @Cain*/const int maxn=1e3+5;bool vis[maxn];int link[maxn]; //初始化为0. 如果有0这个点, 那么就初始化为-1.vecto原创 2017-06-22 18:26:59 · 764 阅读 · 0 评论 -
NYOJ 237 游戏高手的烦恼 【经典的二分图最大匹配】
传送门 这道题是二分图中很经典的问题了. 做了很多遍了, 。 // 题意: n*n的矩阵上有k个敌人, 一颗子弹可以打掉一行或一列的敌人, 问消灭所有敌人最少需要多少颗子弹。// 直接建图, 如果(i, j)上有一个敌人, 那么连一条i -> j的边即可. 然后求该图的最大匹配就行.注: 感觉这道题卡vector, 950ms飘过, 可能换邻接表会快一点.AC Codecons原创 2018-01-31 18:31:05 · 339 阅读 · 0 评论 -
BZOJ 1143 祭祀river【二分图之偏序集的最大反链 】 附上网络流做法
传送门 //题意: 就是给定一个有向无环图, 选择尽量多的点使得其中任意的两个点都不能相互到达. //思路: 在有向无环图中,有如下的一些定义和性质: 链:一条链是一些点的集合,链上任意两个点x, y,满足要么 x 能到达 y ,要么 y 能到达 x 。 反链:一条反链是一些点的集合,链上任意两个点x, y,满足 x 不能到达 y,且 y 也不能到达 x。 那么很显然这道题就是求最长反原创 2017-11-30 18:52:24 · 539 阅读 · 0 评论 -
zoj 3988 Prime Set 【二分图最大匹配 + 思维】
//这可是秦皇岛的金牌题啊, 哎 , 当时没有时间来搞这个题目了, 否则感觉可以出的!!! 可惜啊.传送门 //题意: 给你n个正整数, 一对和为素数的数为一个合法数对. 你选不超过K个合法数对, 使得你选的数对涉及到的数的数量最大化. 输出这个值. 思路: 通过观察可以发现, 我们可以先筛素数2e6以内的, 然后对这n个数进行建边, 符合条件的就有一条边, 然后跑二分图最大匹配, 那么结果就是原创 2017-11-07 22:25:11 · 579 阅读 · 1 评论 -
二分图匹配 --- 最小点覆盖
//二分图有一个重要模型 – 最小点覆盖. 结论 : 最小点覆盖 = 二分图最大匹配数.解释: 最小点覆盖指的是选择尽量少的点, 使得每条边至少有一个端点被选中. 那么在二分图匹配中很容易可以被证明就是该个二分图的最匹配数. (把图画出来写一写就知道了.)举几个例子 :经典例题UVa – 11419 //题意: 在一个矩阵上某些位置上有一些目标, 每一次可以发射一颗子弹, 这颗子弹可以把任意一原创 2017-08-15 23:38:50 · 601 阅读 · 0 评论 -
HDU --- 3861 The King’s Problem 【强联通缩点 + 最小路径覆盖】
题意:把城市至少分成几个州,要满足下列三个条件 1. A能到B,B能到A,那么A,B一定要在一起 . 2. 一个城市只能被划分到一个州里 . 3. 在一个州里的城市,任意2点之间必须有路径 . 对于条件1,就是说强连通的必须在一起,所以用Tarjan进行缩点,然后,条件2,3就是求DAG最小路径覆盖.(有向图的最小路径覆盖 = 顶点数-最大匹配) //对于条件 2 , 3 在同一个原创 2017-07-21 19:43:40 · 452 阅读 · 0 评论 -
二分图匹配 --- 最大独立集
结论 : 最大独立集 = 结点总数 - 最大匹配数(最小点覆盖数). //解释: 最大独立集, 即选择尽量多的结点, 使得任意两个节点不相邻(即任意一条边的两个端点不会同时被选中), 最大独立集和最小点覆盖是互补的. 因此可以得出答案. 至于为什么是互补的, 就请好好想想. (白书P356) //提示: 覆盖集 : 对于每条边, 至少有一个点要被选中. 独立集 : 对于每条边, 至少有一原创 2017-08-16 10:09:38 · 457 阅读 · 0 评论 -
二分图匹配 --- 最小路径覆盖
结论 : DAG的最小路径的最小路径覆盖 = 顶点数 - 对应二分图最大匹配数(单点也算一条路径) 解释: 最小路径覆盖 : 在图中选取尽量少的路径. 使得每个结点恰好在一条路径上(换句话说, 不同的路径不能有公共点). //如果是无向图, 建的双向边, 所以无向图中的最小路径覆盖 = 顶点数 - 对应二分图最大匹配数/2(被算了两次)不过这个很少用, 一般单向就够了. //还有就是对于有...原创 2017-08-15 20:53:38 · 467 阅读 · 0 评论 -
洛谷P1525 关押罪犯 【思维 + 二分图判定】
传送门题意: 给出m对憎恨关系, 有一个憎恨值, 现在要将这n个人分成两堆人, 要求这两堆人中存在的憎恨值最大的最小, 问这个值是多少.思路: 这种问题首先是二分, 然后我们如何check这个答案, 我们将所有边的憎恨值大于我们这个答案的新建一幅图, 然后我们判断能否避免掉这幅图的每一个边的关系, 怎么做了才能避免了? 实际上就是有憎恨关系的两个人一定要放在不同的集合中, 然后怎么判断不能放在...原创 2018-09-24 20:34:38 · 285 阅读 · 0 评论