上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 61 下一页
摘要: 题目链接:http://poj.org/problem?id=2117思路:题目的意思是要求对于给定的无向图,删除某个顶点后,求最大的连通分量数。显然我们只有删掉割点后,连通分支数才会增加,因此我们可以统计删除某个割点后得到的连通块数,而图中的连通分量数=原图的连通分量数+删除某个割点得到的连通块,这样我们枚举割点,选最大值就可以了。http://paste.ubuntu.com/5969809/ 阅读全文
posted @ 2013-08-10 21:14 ihge2k 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1144思路:判断一个点是否是割点的两个条件:1、如果一个点v是根结点并且它的子女个数大于等于2,则v是割点。2、如果点v不是根结点,并且存在她的一个子女u,使得low[u]>=dfn[v],则v是割点。http://paste.ubuntu.com/5969610/ 阅读全文
posted @ 2013-08-10 20:57 ihge2k 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1470思路:题目的意思很简单,就是求树中每个节点作为某两个节点的最近公共祖先的次数,这里我们可以用sum数组来保存,然后就是从根节点开始遍历就可以了。http://paste.ubuntu.com/5968387/ 阅读全文
posted @ 2013-08-10 09:55 ihge2k 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1515思路:题目的意思是说将一个无向图改成有向图,使其成为强连通,输出所有的边。我们可以求无向图的边双连通分量,对于同一个双连通分量,只需保留单边即可构成强连通,而不同的双连通分量则需保留双向边。http://paste.ubuntu.com/5965998/1438是1515的加强版:http://poj.org/problem?id=1438题目大意是将一个混合图(有无向边和有向边)改成强连通图,并且只能去掉某些无向边和有向边。这里我们可以把有向边看成无向边,然后求边双连通分量,对于那些桥,必须加边,对于同一个连通分量,在访问 阅读全文
posted @ 2013-08-09 19:09 ihge2k 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2942思路:我们对于那些相互不憎恨的骑士连边,将每次参加会议的所有人(不一定是整个骑士团,只需人数>=3且为奇数)看做一个点双联通分量,那么每个点都至少有两个点与他相邻。即需要保证双联通分量中存在奇圈。至于如何判奇圈,这里有一个性质:一个图是二分图当且仅当图中不存在奇圈。至于如何判断一个图是否是二分图,可以采用交替染色的方式判断。http://blog.csdn.net/lyy289065406/article/details/6756821http://paste.ubuntu.com/5964960/ 阅读全文
posted @ 2013-08-09 12:21 ihge2k 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874思路:近乎纯裸的LCA,只是题目给出的是森林,就要判断是否都在同一颗树上,这里我们只需判断两个子节点的根节点是否相同就可以了。http://paste.ubuntu.com/5957639/ 阅读全文
posted @ 2013-08-07 13:02 ihge2k 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586思路:在求解最近公共祖先的问题上,用到的是Tarjan的思想,从根结点开始形成一棵深搜树,非常好的处理技巧就是在回溯到结点u的时候,u的子树已经遍历, 这时候才把u结点放入合并集合中,这样u结点和所有u的子树中的结点的最近公共祖先就是u了,u和还未遍历的所有u的兄弟结点及子树中的最近公共祖先就是 u的父亲结点。以此类推。这样我们在对树深度遍历的时候就很自然的将树中的结点分成若干的集合,两个集合中的所属不同集合的任意一对顶点的公共祖先都是 相同的,也就是说这两个集合的最近公共最先只有一个。对于每 阅读全文
posted @ 2013-08-07 10:14 ihge2k 阅读(1368) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3394思路:题目的意思是要求无向图中的冲突边和不需要边的条数,如果一个块中有多个环,则该块中的每条边都是冲突边,而不能形成环路的边则为不需要边。于是我们可以求点双连通分量(块),统计一个块中点数与边数的关系,如果点数大于边数,则为不需要边,如果点数小于边数,则为冲突边。需要注意的地方:Tarjan求点双连通分量的时候,将块出栈时,只能出到u的子节点v为止,因为u作为割点极有可能是该块与别块公用的,这样若是每次都出栈到u,则会破坏其他块。http://paste.ubuntu.com/5957032/ 阅读全文
posted @ 2013-08-07 08:20 ihge2k 阅读(317) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4005思路:首先考虑边双连通分量,如果我们将双连通分量中的边删除,显然我们无法得到非连通图,因此要缩点成树,对于树上的边,我们找到权值最小的边,从这条边的两个端点开始深搜,然后找分别一这两个端点为根的子树中第二权值小的边的最小值。http://paste.ubuntu.com/5954870/ 阅读全文
posted @ 2013-08-06 20:35 ihge2k 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2460思路:题目的意思是要求在原图中加边后桥的数量,首先我们可以通过Tarjan求边双连通分量,对于边(u,v),如果满足low[v]>dfn[u],则为桥,这样我们就可以知道图中桥的数目了。对于每一次query,可以考虑dfs树,树边肯定是桥,然后连上u,v这条边之后,就会形成一个环,这样环内的边就不是割边了,所以只要找到u,v的LCA,把这个路径上的桥标记为否就可以了。http://paste.ubuntu.com/5953573/ 阅读全文
posted @ 2013-08-06 10:41 ihge2k 阅读(600) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 61 下一页