题目链接:http://lightoj.com/volume_showproblem.php?problem=1300 边双连通分量首先dfs找出桥并标记,然后dfs交叉着色找奇圈上的点.这题只要求在奇圈上的点个数.容易得到,一个边双联通分量如果存在奇圈,那么整个分量上的点都属于某个奇圈. #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<alg…
题意:一些骑士,他们有些人之间有矛盾,现在要求选出一些骑士围成一圈,圈要满足如下条件:1.人数大于1.2.总人数为奇数.3.有仇恨的骑士不能挨着坐.问有几个骑士不能和任何人形成任何的圆圈. 思路:首先反向建立补图,然后问题转换成在图中找奇圈,圈肯定出现在双联通分量中,则求出图的双联通分量,又通过特性知道,一个双联通分量有奇圈则其中的点都可以出现在一个奇圈中.而对于奇圈的判定可以用交叉染色判断是非为二分图,二分图中肯定无奇圈,这里用tarjan算法得出割边(先将点入队),确定双联通分量的根节点,(…
LINK 题目大意 有一群人,其中有一些人之间有矛盾,现在要求选出一些人形成一个环,这个环要满足如下条件: 1.人数大于1 2.总人数是奇数 3.有矛盾的人不能相邻 问有多少人不能和任何人形成任何的环 思路 发现如果在原图上直接判断非常的不方便 考虑在补图上挖掘性质 补图: 补图和原图没有任何一条重边 不图和原图的所有边并集是一个完全图 即删去所有存在的边,把不存在的边加上 发现可以选出来的环在补图上一定是一个奇环 那么就可以考虑怎么找到补图中的所有奇环 性质1:包含一个奇环的点双连通分量中的每…
layout: post title: 训练指南 UVALive - 3523 (双联通分量 + 二分图染色) author: "luowentaoaa" catalog: true mathjax: true tags: - 双联通分量 - 二分图染色 - 图论 - 训练指南 --- Knights of the Round Table UVALive - 3523 题意 圆桌骑士.有的骑士之间是相互憎恨的,不能连坐,需要安排奇数个骑士围着桌子坐着,大于3个,求哪些骑士不可能安排到座…
[POJ 2942]Knights of the Round Table(双联通分量+染色判奇环) Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 11661   Accepted: 3824 Description Being a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress, an…
题面还好,就不描述了 重点说题解: 由于仇恨关系不好处理,所以可以搞补图存不仇恨关系, 如果一个桌子上面的人能坐到一起,显然他们满足能构成一个环 所以跑点双联通分量 求点双联通分量我用的是向栈中push边的方法 请注意:只向栈中push树枝边 这样每次一对父子(u,v) 如果low[v]<=dfn[u] 显然u是v所在点双联通分量的割点 所以栈中边(u,v)之前的边都pop,他们连接的点构成点双联通分量 我们找到一个点双联通分量之后,由于要求奇数个人坐一桌 所以满足存在奇环,dfs染色即可 注意…
题目链接 大意 给定\(N\)个点与\(M\)个关系,每个关系表示某两个点间没有直接的边相连,求不在所有奇环上的点的个数. (\(1\le N\le 1e3,1\le M\le 1e6\)) 思路 考虑到\(N\)比较小的缘故,我们不妨暴力连边. 对于现在得到的一个图,我们需要找出所有在奇环上的点. 考虑使用点双联通分量对图进行缩点,对于每个点双分量,暴力的去判断它是否是二分图. ①如果是二分图,那么显然无奇环,对该点双上的点不做修改. ②如果不是二分图,那么对于这个点双联通分量,一定会有一个奇…
题目链接 考虑建立原图的补图,即如果两个骑士不互相憎恨,就在他们之间连一条无向边. 显而易见的是,如果若干个骑士在同一个点数为奇数的环上时,他们就可以在一起开会.换句话说,如果一个骑士被一个奇环包含,那么他就一定可以去开会. 想到环,我们就可以考虑无向图的双联通分量. 当我们用Tarjan算法求出无向图上的双联通分量后再来考虑这一道题时,我们就可以得出两个结论: 1.如果两个骑士分别在两个不同的双联通分量里,那么他们就不可能在一起开会. 这一个结论是很明显的.因为将每个双联通分量缩点后,新图一定…
先放这吧,没时间写,明天再补 "明天到了" 题目链接 题意:求不在任何奇环内的点的数量. Tarjan求点双联通分量,然后再染色判断是不是二分图就好了. 只是不懂为什么Tarjan求双联通分量时要用栈保存点对,希望大佬留言帮助. #include <cstdio> #include <cstring> #include <vector> using namespace std; inline int min(int a, int b){ return…
无向图的双连通分量 定义:若一张无向连通图不存在割点,则称它为"点双连通图".若一张无向连通图不存在割边,则称它为"边双连通图". 无向图图的极大点双连通子图被称为"点双连通分量",记为"\(v-DCC\)".无向图图的极大边双连通子图被称为"边双连通分量",记为"\(e-DCC\)". 没错,万能的图论连通性算法\(Tarjan\)又来了. 预备知识 时间戳 图在深度优先遍历的过程中,…