并查集
主要用于两个互不相交的几何的归并。
把每一个集合可以看作一棵树,主要找到根节点fa[u]=u
合并的就是把它们的根节点的值改变。
# include <iostream> using namespace std; const int nmax = 100; int fa[nmax]; void init(int n) { for (int i = 0; i <= n; i++) cin >> fa[i]; } int findFa(int u) { if (fa[u] == u) return u; fa[u] = findFa(fa[u]); return fa[u]; } void merge(int u, int v) { int fau = findFa(u); int fav = findFa(v); if (fau != fav) fa[u] = fav; }