AcWing 836. 合并集合
原题链接
简单
作者:
Axehco
,
2022-04-01 22:42:23
,
所有人可见
,
阅读 138
#include <iostream>
#include <cstring>
#include <algorithm>
const int N = 100010;
int n, m;
int p[N];
int find(int x) { // 返回x的祖宗节点 + 路径压缩
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) p[i] = i;
while (m--) {
char op[2];
scanf("%s", op);
int a, b;
scanf("%d%d", &a, &b);
if (op[0] == 'M') p[find(a)] = find(b);
else {
if (find(a) == find(b)) puts("Yes");
else puts("No");
}
}
return 0;
}