并查集题型

「力扣」第 547 题:省份数量(中等);

「力扣」第 684 题:冗余连接(中等);

「力扣」第 1319 题:连通网络的操作次数(中等);

「力扣」第 1631 题:最小体力消耗路径(中等);

「力扣」第 959 题:由斜杠划分区域(中等);

「力扣」第 1202 题:交换字符串中的元素(中等);

「力扣」第 947 题:移除最多的同行或同列石头(中等);

「力扣」第 721 题:账户合并(中等);

「力扣」第 803 题:打砖块(困难);

「力扣」第 1579 题:保证图可完全遍历(困难);

「力扣」第 778 题:水位上升的泳池中游泳(困难)。

模板

class UnionFind{
    int[] parent;
    UnionFind(int len){
        parent = new int[len];
        for(int i = 0; i < len; i++)
            parent[i] = i;
    }

    void union(int a, int b){
        parent[find(a)] = find(b);
    }

    int find(int a){
        if(a != parent[a]) parent[a] = find(parent[a]);
        return parent[a];
    }