数据结构-并查集

来源:互联网 发布:南京网络架构师年薪 编辑:程序博客网 时间:2024/05/22 10:44

实现简单,功能强大,居家旅行,必备良品。

#include <iostream>#include <algorithm>using namespace std;const int MAX_N = 100;int par[MAX_N]; //父亲int ranks[MAX_N]; // 树的高度//初始化n个元素void init(int n) {    for (int i = 0; i < n; i++) {        par[i] = i;        ranks[i] = 0;    }}//查询树的根int find(int x) {    if (par[x] == x) {        return x;    }    else return (par[x] = find(par[x])); //优化}//合并x和y所属的集合void unite(int x, int y) {    x = find(x);    y = find(y);    if (x == y) return;    if (ranks[x] < ranks[y]) {        par[x] = y;    }    else {        par[y] = x;        if (ranks[x] == ranks[y]) ranks[x]++;    }}//判断x和y是否属于同一个集合bool same(int x, int y) {    return find(x) == find(y);}int main() {    return 0;}
0 0