美文网首页
并查集模板

并查集模板

作者: 失树 | 来源:发表于2017-11-03 09:03 被阅读0次
    
    int find(int x) {
        int p = x, t;
        while (fa[p] >= 0) p = fa[p];
        while (x != p) {
            t = fa[x];
            fa[x] = p;
            x = t;
        }
        return x;
    }
    void union(int x, int y) {
        if ((x = find(x)) == (y = find(y))) return;
        if (fa[x] < fa[y]) {
            fa[x] += fa[y];
            fa[y] = x;
        } else {
            fa[y] += fa[x];
            fa[x] = y;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:并查集模板

          本文链接:https://www.haomeiwen.com/subject/gmvzpxtx.html