DSU-并查集


最简易的实现, 仅路径压缩.

class DSU {
public:
    std::vector<int> d;
    DSU(std::size_t size) : d(size + 1) {
        std::iota(d.begin(), d.end(), 0);
    }
    int root(int u) {
        return d[u] == u ? u : d[u] = root(d[u]);
    }
    void bind(int u, int v) {
        d[root(u)] = root(v);
    }
};
,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注