大厂笔试题
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

/*
问题描述:
并查集模板
*/
#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是否是亲戚+换行
}