并查集

xiaoxiao2021-02-28  102

int par[maxn];//父节点 int deep[maxn];深度 void init(int n) { for (int i = 0; i < 0; i++) { par[i] = i; deep[i] = 0; } } int find(int x) { if (par[x] == x) { return x; } else { return par[x] = find(par[x]); } } void unite(int x, int y) { x = find(x); y = find(y); if (x == y) return; if (deep[x] < deep[y]) { par[x] = y; } else { par[y] = x; if (deep[x] == deep[y]) deep[x]++; } } bool same(int x,int y) { return find(x) == find(x); }
转载请注明原文地址: https://www.6miu.com/read-58416.html

最新回复(0)