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

  1. /*
  2. */
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. const int N = 100; // 节点数量
  6. int f[N];
  7. int init() {
  8. // 初始化
  9. for (int i=0; i<N; i++)
  10. f[i] = i;
  11. }
  12. int getFather(int x) {
  13. // 查询所在团伙代表人
  14. return f[x]==x ? x : getFather(f[x]);
  15. }
  16. int merge(int a, int b) {
  17. // 合并操作
  18. f[getFather(a)] = getFather(b);
  19. }
  20. bool query(int a, int b) {
  21. // 查询操作
  22. return getFather(a) == getFather(b);
  23. }
  24. int main() {
  25. init();
  26. merge(3, 1); // 3和1是亲戚
  27. merge(1, 4); // 1和4是亲戚
  28. cout << getFather(3) << endl; // 输出3的团伙代表人+换行
  29. cout << query(3, 1) << endl; // 输出3和1是否是亲戚+换行
  30. }