并查集
A_Comme_Amour
胜利油田第一机房
展开
-
luoguP1621 集合
链接 题目 Caima 给你了所有 [a,b] 范围内的整数。一开始每个整数都属于各自的集合。每次你需要选择两个属于不同集合的整数,如果这两个整数拥有大于等于 pp 的公共质因数,那么把它们所在的集合合并。 重复如上操作,直到没有可以合并的集合为止。 现在 Caima 想知道,最后有多少个集合。 就是一道简单的并查集的问题,我写了好久,错了好多地方…… 错误: 1.在判断两个数能否合并的函数中,写了一句if (pri[i]*2 > min(x, y)) break;本来想优化,但是这样就枚举不到小正数原创 2021-03-29 21:14:51 · 370 阅读 · 0 评论 -
【noip2010】关押罪犯
题目描述S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突原创 2017-10-29 12:06:50 · 325 阅读 · 0 评论 -
[JSOI2008]星球大战
题目描述很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。现在,反抗军首原创 2017-10-29 12:09:11 · 362 阅读 · 0 评论 -
【模板】并查集
#include<cstdio> using namespace std; int n,m,father[200001];int find(int x) { if (father[x]!=x) return father[x]=find(father[x]); return father[x]; }void unionn(int x,int y) { int xx=find(原创 2017-11-06 13:18:11 · 286 阅读 · 0 评论