1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| class UnionFindSet {
int n;
vector<int> fa;
public:
UnionFindSet(int n) {
this->n = ++n;
fa.resize(n);
iota(fa.begin(), fa.end(), 0);
}
int find(int x) {
if (fa[x] == x) return fa[x];
return fa[x] = find(fa[x]);
}
void merge(int x, int y) {
fa[find(x)] = find(y);
}
};
|