![](https://img-blog.csdnimg.cn/20190916171250876.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【并查集】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
HDU - 3038 - How Many Answers Are Wrong (带权并查集)
题意:有N个数字,M组关系。每组关系三个数字a,b,s表示a~b的和为s。问与前面产生矛盾的话有几组?思路:带权并查集。多开一个权值数组,存储到自己和父节点的区间和。图一:路径压缩,b~root的和 = b~a的和 + a ~ root的和。图二:合并操作,现在我们知道a~root1和b~root2的区间和,又告诉了我们a~b的区间和,把root2并到root1上的话,root1~root2的区间...转载 2018-04-18 21:12:27 · 118 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场) - E - All men are brothers(并查集+组合数)
题目链接:https://ac.nowcoder.com/acm/contest/889/E 题意:有N个人M个操作,每次操作让两个人互相认识,认识关系可以互相传递,求每次操作完毕后,选4个互相不认识的人的方案数。 思路:首先未操作之前,考虑每次操作对答案的影响,我们设合并的两个集合是,,对于,集合未合并之前,我们可以在,,集合中各挑选一个数,然后在,,集合外挑选两个数,注意集合外挑选时要排除...原创 2019-08-16 18:27:12 · 165 阅读 · 0 评论 -
POJ - 1182 - 食物链 (带权并查集)
题目链接:http://poj.org/problem?id=1182 思路:带权并查集,主要是关系的定义,题目中给了A吃B, B吃C,C吃A,所以我们根据这个来定义关系: 0 : X被Y吃 1 : X和Y同类 2 : X吃Y 也可以定义0:同类 1:吃 2:被吃,只不过权值的关系不一样,中心还是要围绕A吃B, B吃C,C吃A这个定义。无论哪种定义,权值初始化一定要符合你定义的关系,第一种...原创 2019-04-24 11:12:02 · 158 阅读 · 0 评论 -
Educational Codeforces Round 64 (Rated for Div. 2)D. 0-1-Tree(并查集)
题目链接:https://codeforces.com/contest/1156/problem/D 题意:对于数对(x, y),从x到y,有三种走法: 从x到y只走0边 从x到y只走1边 从x到y先走0边后走1边(也就是0只能在1前面走) 问一共有多少种走法? 思路:并查集统计一下0边1边的联通块大小,那么对于节点的贡献就是,统计所有节点的贡献即可。 #include<b...原创 2019-05-03 15:47:19 · 230 阅读 · 0 评论 -
POJ - 1703 - Find them, Catch them(带权并查集)
题目链接:https://cn.vjudge.net/problem/POJ-1703 题意:输入n和m,代表有n个人和m个询问,每个询问遵循下面的规则: A a b要求输出a与b是否在同一个帮派或者不能确定。 D a b告诉你a和b是不同帮派的成员。 思路:带权并查集,1代表不在同一个帮派0代表在同一个帮派。 #include <stdio.h> #include <...原创 2019-04-23 21:44:15 · 215 阅读 · 0 评论 -
POJ - 2492 - A Bug's Life(带权并查集)
题目链接:http://poj.org/problem?id=2492 题意:T组测试数据,每组数据有一个N,M表示N个人和M个关系,下面M行为关系,每组关系有两个数字a,b表示a喜欢b,问有没有同性恋? 思路:带权并查集,定义1为同性,0为异性,带权并查集主要是查找和合并函数中权值的关系,还有初始化权值数组为1,因为开始,都是同性。 #include <stdio.h> #i...原创 2019-04-23 21:29:04 · 170 阅读 · 0 评论 -
poj - 2912 - Rochambeau(带权并查集)
题目链接:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏,'='表示x, y平局,'>'表示x赢y,'<'表示x输y,但是我们不知道x,y的手势是什么;其中有一个人是裁判,它可以出任意手势,其余人手势相同的分一组,共分为三组,可以存在空组,也就是说除了裁判外,其余人每一次出的手势都相同,问能不能确定裁判是几号,如果能,输出最少在第...原创 2019-04-25 20:57:48 · 214 阅读 · 0 评论 -
牛客练习赛41-C-抓捕盗窃犯(dfs or 并查集)
题目链接:https://ac.nowcoder.com/acm/contest/373/C 思路:把每个地点看作一个点,那么每个点一定有且仅有一条有向出边。每个点出度只有1,如果某些点组成了一个有向环,这个环上所有点不会有额外的出边,即这个环一定是一个简单环。也易证每个点最终都会走向一个环。 结论:单独看待每个联通块,每个连通块一定有且只有一个环,只要在这个环上任何一个点建立哨卡,就能抓到这个...原创 2019-03-02 18:05:38 · 340 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2)B. Mr. Kitayuta's Colorful Graph(二维并查集or传递闭包)
题目链接:http://codeforces.com/contest/505/problem/B 题意:首先给你n,m,分别代表n个点和m条边。然后m行,分别有三个数,a[i],b[i],c[i], 代表的是从a[i]到b[i]这条边有c[i]这种颜色的双向边。然后还有q个询问,u[i],v[i], 要你求从u[i]这个点到v[i]这个点直接或间接相连的有几种颜色。 思路:和普通并查集差不多,...原创 2018-12-28 17:47:00 · 257 阅读 · 0 评论 -
P2661 信息传递 - (并查集求最小环)
题目链接:https://www.luogu.org/problem/P2661 思路:如果有两个点祖先节点相同,那么就可以构成一个环,长度为两个点到祖先节点长度之和+1,新加入的一条边的两个端点在并查集中同祖先,则一定成环 。 #include <bits/stdc++.h> using namespace std; #define ll long long #define i...原创 2019-08-17 10:40:38 · 211 阅读 · 0 评论