Building Block |
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 151 Accepted Submission(s): 67 |
Problem Description
John are playing with blocks. There are N blocks (1 <= N <= 30000) numbered 1...N。Initially, there are N piles, and each pile contains one block. Then John do some operations P times (1 <= P <= 1000000). There are two kinds of operation:
M X Y : Put the whole pile containing block X up to the pile containing Y. If X and Y are in the same pile, just ignore this command. C X : Count the number of blocks under block X You are request to find out the output for each C operation. |
Input
The first line contains integer P. Then P lines follow, each of which contain an operation describe above.
|
Output
Output the count for each C operations in one line.
|
Sample Input
6 M 1 6 C 1 M 2 4 M 2 6 C 3 C 4 |
Sample Output
1 0 2 |
Source
题目大意:
移动小方块, m a b 代表将 a 所在的所有小方块移动到 b 上面
Q a 代表 查询 a 下面多少啊个 小方块。
思路:
带权并查集,用两个数组维护 num 和 down
我的天哪,cout jur比 printf 慢好多。
AC代码:
|
07-19
07-19
06-21
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交