
数据结构——并查集
文章平均质量分 79
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
例题3.5 易爆物 UVa1160
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决。我们把每个元素看做一个顶点,则一个简单化合物就是一条边。当整个图存在环的时候,组成环的边对应的化合物是危险的,反之则是安全的。这样,可以通过并查集来维护图的连通分量集合,每次得到一个简单化合物,检查x和y是否在同一个集合中,如果是,则拒绝,反之则接受。3.代码:#define _CRT_SECURE_NO_WARNINGS原创 2015-03-17 20:21:03 · 556 阅读 · 0 评论 -
UVa11987 Almost Union-Find
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决。唯一一个和普通的并查集不太一样的操作就是题目中的操作2,要求将p从它所在的集合中移出,移到q所在的集合。这就提示我们不要让数字本身作为该并查集的树根。因此,我们可以统一把树根都设置为i+n,这样,就可以保证每个数字不会成为并查集的树根了。那么对于操作2,先执行x=findset(p), y=findset(q)。只需要令pa[p]=y原创 2015-10-14 13:41:46 · 445 阅读 · 0 评论 -
HDU 5438 Ponds (2015年长春赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题利用拓扑排序+并查集解决。由于以前没用过用队列来模拟一个拓扑排序过程,比赛时候这道题做的异常艰难才通过==。如果用队列来处理的话,就会方便很多,首先入队列的是degree小于2的点,然后从这些点出发,和他相邻的点的degree都要减小1,如果发现相邻结点的degree也小于2了,那么加入队列,同时标记所有degre小于2的点,表示他们已经被删除了。这原创 2015-09-14 14:05:49 · 624 阅读 · 0 评论 -
HDU 5441 Travel (2015年长春赛区网络赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决,事先存储所有的查询,然后按照值由小到大排序,这样,可以计算出排序后的第i个查询比第i-1个查询增加的结点,比如如果u和v不在同一个集合,且此时u和v分别有rank[u]和rank[v]个元素,那么多增加的值就是2*rank[u]*rank[v]。累加ans即可。3.代码:#include#include#include#原创 2015-09-14 12:16:19 · 659 阅读 · 2 评论 -
ZOJ3811 Untrusted Patrol (2014年牡丹江赛区网络赛C题)
1.题目描述:点击打开链接2.解题思路:本题利用BFS+并查集解决。题意要求寻找输入的访问次序是否可行,而且所有结点都要访问到,因此,如果一开始整个图是不连通的,自然要输出No,连通性可以用并查集来判断。如果图连通,那么看L和K的关系,如果L如果访问顺序是可行的,那么第一个仓库是谁并不重要,不妨就把收集到的第一个传感器信号所在的结点作为第一个访问的仓库,接下来我们可以利用BFS将所原创 2015-08-18 10:37:29 · 885 阅读 · 0 评论 -
POJ 1182 食物链
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决。根据题意知,需要三个并查集,这里为了方便,给数组par均分为三段,分别记为A,B,C。通过下标来控制不同的集合。那么接下来该如何处理每一条信息呢?当输入第一种信息时,表示u和v属于同一类,此时有三种可能,因此要把u和v分别合并到A,B,C中。如果是第二种,表示u吃v,那么也有三种情况:u在A中v在B中,u在B中v在C中,u在C中v原创 2015-04-06 23:29:28 · 493 阅读 · 0 评论 -
HDU 5006 Resistance (2014年鞍山赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题利用缩点+高斯消元解决。本题的最大特点就是电阻非零即一,如果电阻为0,说明零点之间是等电位点,可以看做一个整体,自然可以想到先利用并查集进行缩点操作,将复杂的电路图转化为不相等的电位点构成的电路图。如果转换完毕后,发现s和t在一个集合中,说明两点之间是等电位的,自然电阻为0,否则,对转换后的图G‘重新判断连通性,依然可以利用并查集解决,如果发现不连通原创 2015-08-07 23:20:49 · 673 阅读 · 0 评论 -
例题6-16 单词 UVa10129
1.题目描述:点击打开链接2.解题思路:本题利用欧拉回路存在条件解决。可以将所有的单词看做边,26个字母看做端点,那么本题其实就是问是否存在一条路径,可以到达所有出现过的字符端点。由于本题还要求了两个单词拼在一起的条件是前一个单词的右端点和本单词的左端点一样。所以这是一个有向图。根据结论:有向图的底图(忽略边的方向后的图)必须连通;有向图中最多只能有两个端点的入度不等于出度,且必须是其中一点的原创 2015-03-31 16:20:34 · 841 阅读 · 0 评论 -
例题3.6 合作网络 UVa1329
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决。因为从题目的要求可知,只涉及距离查询到根结点的距离,因此除了根结点外,其他结点的位置可以任意改变,只是要维护到父结点的距离。当进行路径压缩时,更新这个距离值即可。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include原创 2015-03-17 20:53:56 · 575 阅读 · 0 评论 -
LA4730 Kingdom
1.题目描述:点击打开链接2.解题思路:本题利用BIT+并查集解决。根据题意可以发现,x值是没有意义的,因此本题实际上是一维的一个操作题。由于line操作需要输出州的个数和城市的个数,且是统计一个点处的结果,自然可以想到用离线标记法来解决,又因为查询操作也比较多,因此可以用BIT来标记和查询。那么如何来更新一个州的城市数目呢?可以用并查集解决,但是有一个问题:两个连通分量合并成一个连通分量时候原创 2015-10-15 23:15:02 · 611 阅读 · 0 评论