并查集 POJ 1988
2015-04-05 23:51
232 查看
#include <cstdio> #define N 30010 int pa ; //parent int siz_tree ; //size of tree int d ; //dist between node and root int Find(int x) { if(pa[x] == x) return x; int t = pa[x]; pa[x] = Find(pa[x]); d[x] += d[t]; return pa[x]; } void Union(int x, int y) { x = Find(x), y = Find(y); pa[x] = y; d[x] += siz_tree[y]; siz_tree[y] += siz_tree[x]; siz_tree[x] = 0; } int main() { int p; while(~scanf("%d", &p)) { for(int i = 0; i < N; i++) pa[i] = i, siz_tree[i] = 1, d[i] = 0; char c; int x, y; for(int i = 0; i < p; i++) { while(1) { c = getchar(); if(c == 'M' || c == 'C') break; } if(c == 'M') { scanf("%d%d", &x, &y); Union(x, y); } else { scanf("%d", &x); Find(x); printf("%d\n", d[x]); } } } return 0; }
相关文章推荐
- POJ 1988 Cube Stacking(并查集)
- POJ 1988 Cube Stacking——并查集
- POJ 1988 Cube Stacking(带权并查集)
- 【POJ 1988】 Cube Stacking (带权并查集)
- POJ 1988 带偏移量的并查集
- [POJ 1988] Cube Stacking (带值的并查集)
- poj-1988 Cube Stacking 带权并查集
- poj 1988 Cube Stacking 并查集的应用
- Cube Stacking POJ - 1988 并查集
- POJ 1988 Cube Stacking 并查集
- POJ 1988 Cube Stacking(带权并查集)#by zh
- POJ 1988 Cube Stacking (带权并查集)
- POJ 1988【并查集+记录个数】
- 【POJ1988】Cube Stacking(并查集)
- POJ 1988 带偏移量的并查集
- 题解 并查集 POJ 1988
- POJ 1988 Cube Stacking(路径压缩并查集)
- poj 1988 Cube Stacking(加权并查集 )
- poj 1988 Cube Stacking (并查集)
- POJ 1988 Cube Stacking(带权并查集)