之前一直不明白点双连通分量能用来干嘛,比如边双连通分量可以问加几条边能变成边双连通,这个题目是这样的,每个圆桌会议至少三个骑士参加,因为需要表决意见,所以骑士数目必须是奇数个,直到那些骑士互相憎恨,也就是不能坐在一起的,把能坐在一起的建边,求无法参加任何会议的骑士的个数,重点是任何会议,这点非常关键,这道题之前一直卡在这里,还有就是有的人属于好几种双连通分量,所以全部标记之后再减掉比较好,至于奇数个...
分类:
其他好文 时间:
2016-05-12 16:30:40
阅读次数:
182
给定n个点,m条边. 求最少最要加几条边使图中存在奇环,且输出此时加边的方法种数 根据题意,只可能为 0:已经存在奇环,dfs搜到已经染色的且颜色相同 1:判断每个连通块里的 染色黑白色的个数 2 :某个点的 度 > 1 3:0条边 ...
分类:
其他好文 时间:
2016-04-01 13:04:21
阅读次数:
155
题意: 给出一个无向图, 有联通地方, 求联通个数。 (好吧, 我还不是很懂) 二分图染色: ...
分类:
其他好文 时间:
2016-03-26 18:32:33
阅读次数:
132
UvaLive3523 Knights of the Round Table 参考了Kuangbin巨的题解。 /* POJ 2942 Knights of the Round Table 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突, 并且能够让会议的议题有令人满意的结果,每次开会前都必
分类:
移动开发 时间:
2016-02-24 17:18:33
阅读次数:
239
二分图染色 b点跟除自身外所有的点连接,共n-1个,首先把连接n-1个的点全部设为b点,其它点任意一点设为a,与a相连的都是a点,剩余为c点。最后验证是否成立。 验证条件为,所有连接的点之间的差值的绝对值不超过1,未连接的点之间的差值的绝对值都大于1. 1 #include<bits/stdc++.
分类:
其他好文 时间:
2016-02-13 10:01:18
阅读次数:
151
题意:有一个无向图和三种颜色,顶点数目n
思路:如果直接暴力的话时间复杂度是3^n,显然无法承受。
考虑任意一个结点u,那么S(u)中的所有点组成的子图是联通的并且S(u)中的点只能染另外两种颜色,由于这个图是联通的,所以染色方案肯定是唯一的,也就是说我们对于每个节点进行一次二分图染色,如果有冲突那么不存在方案。这样一来时间复杂度降为了O(n*n)。
#include
#include
#i...
分类:
其他好文 时间:
2015-08-30 12:57:30
阅读次数:
141
传送门
大意:我们把图分为两部分,使得两部分中的内部边的最大权值最小。
思路:哎,拿到题的时候想了二分图染色,发现不好做,但我没有想到二分,只好最后去骗了一个30分。正确的思路是:首先我们要 去二分最大的冲突边的是哪一条(按照权值二分),因为当二分的边权增大时,连的边也就越少,连通块的数目就越多,冲突就越少,所以边权是可以二分的,在二分过后用二分图判定,如果可以染成二分图即为可行的解。代码:#i...
分类:
其他好文 时间:
2015-08-17 08:47:01
阅读次数:
232
考试的时候写的最大生成树,然后二分图染色,因为这样两个矛盾很大的罪犯不会被分在一个监狱里面。
然而最大生成树超时,80分。
正解为二分边权,将边权值大于mid的全部连边构图,判断是否为二分图,如果不是二分图,那么无解。
如果无解,则说明边权的限制条件太小了,因为连的边太多,不容易形成二分图;如果有解,则说明边权的限制条件太大,因为更少的边有利于形成二分图。
80分代码,最大生成树:
#i...
分类:
其他好文 时间:
2015-08-16 21:28:15
阅读次数:
116