![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
leonharetd
这个作者很懒,什么都没留下…
展开
-
find the most comfortable road(hdu并查集+暴力)
题意:每两个点之间都有一个速度,求a点到b点速度之差最小是多少,如果到达不了输出-1; 思路:先按照速度排序,并查集(最小生成树思路)一直到a,b联通,然后求最大速度和最小速度的差,这个要暴力,每条边都建立最小生成树,最后找到一个最小的速度差原创 2013-07-25 18:11:34 · 684 阅读 · 0 评论 -
Junk-Mail Filter(hdu2473并查集+删点操作)
题意:一些点M a,b代表a,b是一个集合,S a代表从集合中删除a点,最后输出有几类 思路:并查集,M代表合并,S代表删除,下面讲一下删除操作 大家都知道合并操作就是找到找到两个节点的父亲,修改父亲,如果删除就是将该点的父亲重新设置成自己,这样行不行呢? 这是不行的,比如1,2,3的父亲都是1,现在删除1,1的父亲还是1,2,3也是1,集合还是1个,正确的应该是2个。 那删除节点的父亲不原创 2013-07-25 18:35:10 · 1321 阅读 · 0 评论 -
Dragon Balls(hdu3635带权并查集)
题意:n个城市有n个龙珠,T a,b 代表将龙珠a移动到b城市,Q a代表查询龙珠a所在城市,该城市有多少颗龙珠,该龙珠移动了多少次。 注意:移动时是将龙珠所在该城市所有龙珠都移动,每个龙珠不会再回到自己以前呆过的城市。就是说假如龙珠1,2,3,都在城市2,那么龙珠就不能再移动了 在路径压缩的时候更新他的距离值 rootxx --> rootx 移动是3,rootx -->x的移动原创 2013-07-26 08:46:38 · 836 阅读 · 0 评论 -
Segment set(hdu1558并查集+计算机和)
题意:给你一些线段坐标,判断线段是否相交,线段相交的属于一类,只要和这一类中任何一段线段相交,那他们就属于一类,给你一条线段,输出和他一类的有多少种 思路:判断线段是否在同一集合,用并查集,每次假如一个线段,遍历现有的线段和哪个相交就和哪个合并,然后根节点的秩+1,最后输出该节点父亲节点的秩就行了。 现在判断线段相交。 1.一个线段的两个点在另一个线段的两边,那么该线段就相交,用向量的叉乘,原创 2013-07-26 07:53:27 · 737 阅读 · 0 评论 -
A Bug's Life(hdu1829种类并查集)
题意:有一群虫子,现在给你一些关系,判断这些关心有没有错 思路:向量种类并查集,下面讲一下向量的种类并查集 本题的各个集合的关心有两种0同性,1异性,怎么判断有错, 1.先判断他们是否在一个集合,即父亲是否相同,若父亲相同,用向量算的父亲之间的关系和之前的关心有矛盾没,有矛盾就是有错。 2.如果不在一个集合,就合并他们的父亲,用向量根据根节点的关心求出父亲的关心,然后合并。 这是原创 2013-07-25 21:04:17 · 747 阅读 · 0 评论 -
Is It A Tree?(hdu132并查集)
题意:给你一些点的关系,判断他们能否组成一棵树 组成树的条件 1.根节点只有一个。 2.不能有环。 #include #include #include #include using namespace std; int father[100000]; int f[100000]; int ff[100000]; int flag = 0; void Make_set(int n) {原创 2013-07-26 07:02:43 · 627 阅读 · 0 评论 -
Zjnu Stadium(hdu3047带权并查集)
题意:一个300列的无限行的循环场地,a b d代表a,b顺时针相距d的距离,现在给你一些距离,判断是否有冲突,如果有冲突计算冲突的次数 思路:带权并查集 a,b的距离等于b到根节点的距离 - a到根节点的距离 1.当a,b在同一集合的时候就用b到根节点的距离 - a到根节点的距离和当前输入的距离进行对比,看是否满足条件 2.当a,b不在同一集合的时候合并两个节点,更新距离 向量法,方向原创 2013-07-26 14:10:33 · 698 阅读 · 0 评论 -
How Many Answers Are Wrong(hdu3038带权并查集)
题意:给你一些区间的和,错误的有多少个。 思路:带权并查集 点a到点b的距离等于b到根的距离-a到根的距离 其他同3047一样 #include #include #include #include using namespace std; struct bian { int father; int dis; }p[200005]; int flag = 0; void原创 2013-07-26 14:56:08 · 618 阅读 · 0 评论 -
Rank of Tetris(hdu1811拓扑排序+并查集)
题意:关于Rating的信息。这些信息可能有三种情况,分别是"A > B","A = B","A 根据这些信息是否能够确定出这个高手榜,是的话就输出"OK"。否则就请你判断出错的原因,到底是因为信息不完全(输出"UNCERTAIN"),还是因为这些信息中包含冲突(输出"CONFLICT")。注意,如果信息中同时包含冲突且信息不完全,就输出"CONFLICT"。 思路:拓扑排序 A > B 就在原创 2013-08-09 10:14:08 · 790 阅读 · 0 评论