带权并查集实现立方体堆栈移动与计数查询
类型:程序题

题目描述

农夫John和Betsy在玩一个立方体游戏,共有 N(1 ≤ N ≤ 30000)个编号为 1~N 的立方体,初始时每个立方体单独作为一个堆栈。共需要执行 P(1 ≤ P ≤ 100000)次操作,操作分为两类:

  1. 移动操作(M X Y):将包含立方体 X 的整个堆栈,移动到包含立方体 Y 的堆栈的顶部。
  2. 计数操作(C X):统计立方体 X 所在堆栈中,X 下方的立方体数量并输出。

请编写程序完成上述操作并输出对应结果。

输入描述

  • 第 1 行:1 个整数 P,表示操作总数。
  • 第 2~P+1 行:每行描述一个操作:
    • M 开头表示移动操作,后接两个整数 X、Y;
    • C 开头表示计数操作,后接一个整数 X。

注意:输入中不会给出 N 的值,不存在将堆栈移动到自身的无效操作。

输出描述

按输入顺序,每行输出一个计数操作的查询结果。

输入样例1

M 1 6
C 1
M 2 4
M 2 6
C 3
C 4

输出样例1

1
0
2
代码编辑器 加载中...
测试用例(F10) 运行测试(F11) 提交答案(F12)
测试用例输入
{{resultStatus.text}}