时月oe

博客园 首页 新随笔 联系 订阅 管理

并查集

并查集的作用就是为了快速判断两个结点是否是联通的,可以用来判断公共祖先等问题

并查集主要的任务就是维护findunion函数

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);
    }
}

上面这个并查集包含了路径优化

关于并查集的题目汇总:

posted on 2022-03-07 20:37  时月oe  阅读(37)  评论(0)    收藏  举报