1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n, m; // 人数、操作数量 int fa[21234]; // fa[i]: 记录 i 的父节点 int cnt[21234]; // cnt[i]: 记录家族人数(只有是祖宗节点时才有效) // 返回x的祖宗节点 int findFa(int x) { if (x == fa[x]) return x; return findFa(fa[x]); } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; // 初始每个人自己是自己的祖宗 for (int i = 1; i <= n; i++) fa[i] = i, cnt[i] = 1; // 处理 m 次操作 while (m--) { char c; int u, v; cin >> c; if (c == 'M') { cin >> u >> v; // 找到两个人的祖宗节点 int faU = findFa(u); int faV = findFa(v); if (faU != faV) { if (cnt[faV] < cnt[faU]) { fa[faV] = faU; cnt[faU] += cnt[faV]; } else { fa[faU] = faV; cnt[faV] += cnt[faU]; } } } else { int u; cin >> u; // 找到两个人的祖宗节点 int faU = findFa(u); cout << cnt[faU] << "\n"; } } return 0; }
- 1
信息
- ID
- 618
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 39
- 已通过
- 23
- 上传者