并查集
协奏曲❤
这个作者很懒,什么都没留下…
展开
-
HDU - 1863 畅通工程
HDU-1863 畅通工程题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863大意:这个题就是一个最小生成树的问题,这里通过构建一个结构体数组来存储道路的起点和终点,以及这条路的费用。在操作中,实质上还是涉及了并查集的知识,在判断出两个村庄的祖先是不是同一个地方是时候进行merge函数操作,但合并的村庄数目达到了总数目时输出最后的结果即可。但是...原创 2018-11-03 14:16:10 · 123 阅读 · 0 评论 -
并查集的简单操作
并查集的简单操作个人感觉并查集就是一个找爹的感觉,要把同一类的祖先找齐,就是寻找到是一个家族的人,又是可能某些数据被该家族踢出,但是实质上还是对数组下标的操作。1.最普通的并查集操作例题:HDU1213问题:就是问认识的人可以坐在一起,问最少需要多少个桌子,这些人可以全都坐下代码:#include<iostream>#include<cstdio>#incl...原创 2018-11-02 15:50:46 · 117 阅读 · 0 评论 -
并查集的删除操作
并查集删除操作因为在进行操作时,在原有的赋值基础上对数据下标进行改变,若是改变根节点,那么结果可能产生意想不到的错误(其实可以想到),所以就先把所有的数据先放到类似于一个盒子的里面,然后在进行下标的更改操作,其实还是对数组的操作。几个关键点:int index; //存放盒子节点使用到哪一个了void init(int n){ index = n; for(int i...原创 2018-11-02 15:57:16 · 572 阅读 · 0 评论 -
并查集的合并操作
并查集的合并操作例题:CodeForces - 566D D - Restructuring Company题目需要注意:并查集合并的时候并不是简单地两个点之间的合并,其中还加入了区间的操作,如果还是按照原来的合并操作,那么时间复杂度会比较高提示:提示:很显然是并查集,只是type==2是对应的是区间操作,但发现如果是在一个集合里了还要操作就是浪费,可以把已经在一个区间的压缩,用一个p...原创 2018-11-02 16:01:31 · 2078 阅读 · 0 评论 -
并查集的使用,臭虫同性恋问题
并查集臭虫同性恋经典问题这个问题也可以理解为:敌人的敌人是朋友问题,这个题总的来说就是进行两个并查集的增添问题,敌人的敌人是朋友,类似,如果出现了敌人的敌人是敌人的情况,那么就输出这种情况就可以了。例题 :poj-2492 -A Bug’s Life代码:#include<stdio.h>#include<string.h>#include<iostrea...转载 2018-11-02 16:06:51 · 1132 阅读 · 0 评论