
二分图
xyc1719
努力会说谎,但努力不会是白费
展开
-
二分图匹配——学习匹配
匹配:一张图G中两两没有没有公共点的边的集合(简称边集)二分图:可以把点集分为两个集合X和Y,使得每条边的端点一个属于X另一个属于Y的一张图。原理上我们可以把这种图的结点进行二染色并使得同色结点不相邻。(可以证明:一个图是二分图,当且仅当他不含长度为奇数的圈【奇圈】)二分图最大基数匹配:针对无权图,求出包含边数最多的匹配。即二分图最大基数匹配。上有O(n*m)的匈牙利算法,同时我们也可以将...原创 2018-08-01 18:21:31 · 456 阅读 · 0 评论 -
没有上司的舞会
问题抽象:给一个DAG,选择尽量多的点使彼此之间不存在祖先-后代关系。5%: 暴力枚举每一个点是否被选中,时间复杂度:O(2^n)20%: 在上一个做法的基础上加上一些剪枝。时间复杂度:O(2^n)。 此算法亦可通过n==200的测试点,且只需要16ms(luogu上)。树的部分分: 容易发现选择全部叶节点即可。时间复杂度:O(n)“每个会员...原创 2018-08-16 19:05:00 · 713 阅读 · 0 评论 -
CodeForces 19E 仙女fairy
CF19E 话说标题“仙女”,好骚啊。。。。这道题的题面核心是图论二分图。满足删除一条边,可以形成一张二分图。求可以删除的边数,并输出是那些边。出题人非常良心的给出了前六十分的暴力分,只要你暴力枚举每条边,再二染色判断是否为二分图即可。在windows环境下,如果忘记手动开栈或者不选择非递归形式,我们就可以获得五十分的好成绩。正确做法是考虑奇环,有奇环就没有二分图,所以我们要破坏掉所...原创 2018-08-17 19:48:59 · 361 阅读 · 0 评论 -
Perfect
【一句话题意】给定M个二元组(A_i, B_i),求X_1, …, X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立。【分析】经过不严格的证明我们可以猜想只有不成环或者成偶环时,答案才成立。(一直在0点和1点放一定是最优的)所以只要二分图染色判奇环就可以了,如果是二分图就直接输出染色结果就可以了(反正有spj啦啦啦)。【code】#include...原创 2018-10-28 15:10:20 · 145 阅读 · 0 评论 -
大联欢 party.cpp
【一句话】有n 个点m条无向边,问是否能使n个点划分到两个集合中使得每个集合都是一个完全图。如果不可以输出-1,如果可以则输出两个集合最小的边数总和。【分析】可以说是图论的经典一题。正方向建图似乎很难考虑,那我们考虑建反图(有边的没边,没边的有边)。反图中每条边表示的意义就是,两个点不能在同一个集合(如果在同一个集合,则集合一定不是完全图)。再者进行二分图染色,如果我不存在矛盾的情况,就一定会...原创 2018-11-02 15:25:18 · 148 阅读 · 0 评论 -
约束 limit.cpp
【一句话题意】现有n个点,n条有向边。要求将n个点分入两个集合A,B,使得对于集合A中的每一个点x,存在一个集合B中的点y,从y到x有一条有向边。问集合A最多能包含几个点。n<=1e5【分析】首先需要确定的是,这是一道包着“集合”外壳的图论题。乍一看,是否与求最大二分图匹配有几分神似?鉴于一句OI名言**“题目是死的,人是活的,出题人是懒的。”**机房一位大佬尝试着使用二分图算法,结果...原创 2018-11-07 14:20:30 · 156 阅读 · 0 评论