您的位置:首页 > 其它

ACDREAM 01F(并查集)

2015-04-21 13:00 357 查看

并查集

并查集三部曲

1、初始化并查集数组

[code]void init() {
    for (int i = 1; i <= n; i++) {
        pa[i] = i;  
    }
}


2、查找x在并查集中的父亲

[code]int find(int x) {
    return x == pa[x] ? x : pa[x] = find(pa[x]);
}


3、合并两个集合

[code]void Union(int a, int b) {
    int ra = find(a), rb = find(b);
    if (ra < rb) {
        pa[rb] = ra;
    } else {
        pa[ra] = rb;
    } 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: