You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
731 B
38 lines
731 B
/*
|
|
问题描述:
|
|
并查集模板
|
|
*/
|
|
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
|
|
const int N = 100; // 节点数量
|
|
int f[N];
|
|
|
|
int init() {
|
|
// 初始化
|
|
for (int i=0; i<N; i++)
|
|
f[i] = i;
|
|
}
|
|
|
|
int getFather(int x) {
|
|
// 查询所在团伙代表人
|
|
return f[x]==x ? x : getFather(f[x]);
|
|
}
|
|
|
|
int merge(int a, int b) {
|
|
// 合并操作
|
|
f[getFather(a)] = getFather(b);
|
|
}
|
|
|
|
bool query(int a, int b) {
|
|
// 查询操作
|
|
return getFather(a) == getFather(b);
|
|
}
|
|
|
|
int main() {
|
|
init();
|
|
merge(3, 1); // 3和1是亲戚
|
|
merge(1, 4); // 1和4是亲戚
|
|
cout << getFather(3) << endl; // 输出3的团伙代表人+换行
|
|
cout << query(3, 1) << endl; // 输出3和1是否是亲戚+换行
|
|
}
|