带权并查集实现立方体堆栈移动与计数查询
题目描述
农夫John和Betsy在玩一个立方体游戏,共有 N(1 ≤ N ≤ 30000)个编号为 1~N 的立方体,初始时每个立方体单独作为一个堆栈。共需要执行 P(1 ≤ P ≤ 100000)次操作,操作分为两类:
- 移动操作(M X Y):将包含立方体 X 的整个堆栈,移动到包含立方体 Y 的堆栈的顶部。
- 计数操作(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 本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析