
并查集
Noooooorth
能够放弃的东西从来都不叫梦想
展开
-
POJ 1797 Heavy Transportation(二分+并查集/kruskal)
有n个城市,m条路,从1走到n的道路的最大承载量,最大承载量就是走过的路的承载量的最小值。呵呵呵~~~再次举个栗子:假设n=3,m=3,连接1与2的城市的路的承载量为3,连接1与3的承载量是4,连接2与3的承载量是5,那么从1到3有2种走法:(1)1-2-3,承载量依次是3,5,那么最大承载量就是5;(2)1-3,承载量是4,最大承载量也是4,所以答案是4。原创 2015-08-16 14:08:17 · 2089 阅读 · 0 评论 -
POJ 1182 食物链(并查集)
这道题《挑战程序设计》上有详细讲解。对于每一只动物,我们创建3个元素:i-1,i-2,i-3。同时使用一个N*3的并查集维护。 i-1表示i是1物种。并查集中每个集合中的元素表示组内情况同时发生或者同时不发生。 那么对于2种输入,我们可以按照如下的方式维护: 对于a和b是同一类:合并a-1与b-1,a-2与b-2,a-3与b-3; 对于a吃b:合并a-1与b-2,a-2与b-3,a-3与b-1。 合并前要先检查是否矛盾,如对应a与b同一类,如果a-1和b-2在同一集合中,则为假话。原创 2015-08-16 00:07:42 · 1807 阅读 · 0 评论 -
Codeforces Round #363 (Div. 2) D. Fix a Tree(并查集)
题目链接:点击打开链接 题目大意:给出一个可能有环的图的父节点序列,要求修改最少的边使其变成一棵树,输出改变次数和改变后的父节点序列。 解题思路:定义一个root,表示变换后的树根。在输入的同时,如果一个点的父节点是其本身,那么把root更新为该点。然后向图中逐条加边,如果出现环 1.若此时root已经存在,那么直接把i连向root 一个栗子: 变换后 2.若此时root不原创 2016-07-21 01:01:42 · 474 阅读 · 0 评论