并查集
并查集的作用就是为了快速判断两个结点是否是联通的,可以用来判断公共祖先等问题
并查集主要的任务就是维护find和union函数
public class UnionFind {
public int[] root;
public UnionFind(int Size){
root = new int[Size];
//将所有结点的父结点初始化为自己
for(int i = 0;i < Size;i++){
root[i] = i;
}
}
public int find(int x){
if(x != root[x])return root[x] = find(root[x]);
return root[x];
}
//将两个结点联通起来
public void union(int x,int y){
int rootX = find(x);
int rootY = find(y);
if(rootX != rootY){
root[rootY] = rootX;
}
}
public boolean connected(int x,int y){
return find(x) == find(y);
}
}
上面这个并查集包含了路径优化
关于并查集的题目汇总:
浙公网安备 33010602011771号