模板:并查集

int ds[N], n;
void init() { memset(ds, -1, sizeof ds); }
int find(int x) { return (ds[x] < 0) ? x : (ds[x] = find(ds[x])); }
void merge(int x, int y) {
    if ((x = find(x)) == (y = find(y))) return;
    if (ds[x] > ds[y]) swap(x, y);
    ds[x] += ds[y], ds[y] = x;
}
posted @ 2026-10-13 20:20  zxqMATT  阅读(5)  评论(0)    收藏  举报