class UnionFind{
int n;
int[] size;
int[] parent;
int count;
public UnionFind(int n){
this.n = n;
this.size = new int[n];
this.parent = new int[n];
this.count = n;
for(int i = 0; i < n; ++i){
size[i] = 1;
parent[i] = i;
}
}
public void union(int i, int j){
int x = find(i);
int y = find(j);
if(x != y){
parent[y] = x;
size[x] += size[y];
size[y] = 0;
count--;
}
}
public int find(int x){
return parent[x] == x ? x : (parent[x] = find(parent[x]));
}
}
并查集Java代码实现
最新推荐文章于 2023-11-25 23:04:51 发布