HDU 3635 Dragon Balls 并查集水题 模拟
2013-12-06 14:42
375 查看
题意:n个龙珠,编号为1...n,分别在编号1....n的城市中。有两种操作,T A B,把A所在的城市的龙珠全部放到B所在的城市里;Q A,查询龙珠A所在的城市,以及城市现在有几个球,以及A被转移了几次。
很明显的并查集题目,刚开始没注意看是AB所在的城市,WA了一次...
代码:
很明显的并查集题目,刚开始没注意看是AB所在的城市,WA了一次...
代码:
/* * Author: illuz <iilluzen[at]gmail.com> * Blog: http://blog.csdn.net/hcbbt * File: hdu3635.cpp * Create Date: 2013-12-06 14:24:29 * Descripton: union set */ #include <cstdio> #include <cstring> const int MAXN = 1e4 + 10; int cnt[MAXN], pos[MAXN]; int n, q, t, a, b; char op[3]; int main() { int cas = 1; scanf("%d", &t); while (t--) { scanf("%d%d", &n, &q); printf("Case %d:\n", cas++); // init for (int i = 0; i <= n; i++) cnt[i] = 1, pos[i] = i; // quest while (q--) { scanf("%s", op); if (op[0] == 'T') { scanf("%d%d", &a, &b); // a -> b; while (a != pos[a]) a = pos[a]; while (b != pos[b]) b = pos[b]; cnt[b] += cnt[a]; cnt[a] = 0; pos[a] = b; } else { scanf("%d", &a); b = 0; while (a != pos[a]) a = pos[a], b++; printf("%d %d %d\n", a, cnt[a], b); } } } return 0; }
相关文章推荐
- HDU 3635 Dragon Balls(带权并查集)
- HDU 3635 Dragon Balls 带权并查集
- hdu 3635 Dragon Balls(并查集)
- hdu 3635 Dragon Balls(并查集)
- hdu 3635 Dragon Balls(并查集)
- HDU 3635 Dragon Balls(并查集)
- HDU 3635 Dragon Balls(并查集)
- HDU 3635 Dragon balls -并查集
- HDU-3635 Dragon Balls 并查集路径压缩
- HDU 3635 Dragon Balls (并查集)
- hdu 3635 Dragon Balls(并查集应用)
- HDU 3635 Dragon Balls(并查集)
- HDU 3635-Dragon Balls(高级并查集)
- HDU 3635 Dragon Balls(带权并查集)
- hdu 3635 Dragon Balls (并查集,路径压缩应用)
- HDU 3635--Dragon Balls【并查集,有技巧】
- hdu 3635 Dragon Balls(并查集)
- hdu 3635 Dragon Balls (并查集,路径压缩应用)
- hdu 3635 Dragon Balls(并查集)
- hdu Dragon Balls 3635【并查集】