前言:今天是农历2021的最后一天!今天就不介绍什么新算法了,放一个带有路径压缩和按秩合并的并查集模板吧,祝大家在新的一年里,都能和挚友走在一起,union
长存!
代码模板:
struct UnionFind {
int n;
vector<int> par, rank;
UnionFind(int _n) {
n = _n;
par = vector<int>(n);
rank = vector<int>(n, 1);
for (int i = 0; i < n; ++i)
par[i] = i;
}
int find(int x){
if(x == par[x])
return x;
return par[x] = find(par[x]);
}
void unite(int x, int y){
x = find(x), y = find(y);
if(x != y){
if(rank[x] > rank[y]){
rank[x] += rank[y];
par[y] = x;
}else{
rank[y] += rank[x];
par[x] = y;
}
}
}
};