并查集

并查集

主要用于两个互不相交的几何的归并。

把每一个集合可以看作一棵树,主要找到根节点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;
}

 

posted on 2016-11-14 13:56  mkfoy  阅读(149)  评论(0编辑  收藏  举报

导航