11987专题

UVA - 11987 Almost Union-Find

题意:按要求操作集合 思路:并查集,因为我们一般都为i的祖先设为自己,但是当我们移动某个数字的时候,这个数字可能是这个集合的祖先,这会冲突,所以我们将i的祖先设为i+n #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MA

UVA 11987——Almost Union-Find(并查集+删除操作)

题意: 初始有N个集合,分别为 1 ,2 ,3 .....n。有三种操件 1 p q 合并元素p和q的集合 2 p q 把p元素移到q集合中 3 p 输出p元素集合的个数及全部元素的和。 思路: 正如题目的名字一样,这几乎就是个并查集。 1,3 非常好实现,就是用cnt[],sum[]两个数组记录元素个数和元素和,并且每次合并集合的时候,更新对应根节点的cnt[]和sum[