#P7543. [CEOI2011] Treasure Hunt
[CEOI2011] Treasure Hunt
题目描述
现在有一棵树,初始时只有一个根节点 ,你需要完成下列两种操作:
path u s
表示在 下面依次加入了 个节点:其中的第 个节点作为第 个节点的孩子(),特别地,第 个节点会作为 的孩子。设加入前时,树中节点的最大编号为 ,则新加入的 个点会被依次编号为 ;dig u v
表示询问 的中点。形式化地,设 间的距离为 ,则你需要求出 的路径上,距离 为 的节点编号。
输入格式
本题是一道交互题,首先你需要从标准输入读入操作次数 。
接下来 次,你会得到以下两种格式的指令之一:
P u s
表示一次path u s
的操作;D u v
表示一次dig u v
的操作。
对于第一种操作,你不需要输出任何东西。对于第二种操作,你必须给出答案并清空缓冲区后,才可以读取后续操作。
在您输出一行后,请清空缓冲区:
- 在 C++ 中,使用 fflush(stdout) 或 cout.flush()。
- 在 Pascal 中,使用 flush(output)。
- 在 Python 中,使用 stdout.flush()。
- 其它语言请自行查阅文档。
输出格式
对于每一次 D u v
的操作,输出一行表示答案,保证至少有一次这样的操作。
11
P 1 2
D 1 3
P 2 5
D 7 3
D 3 7
P 1 2
P 3 3
D 10 11
P 5 1
D 14 8
D 2 4
2
5
4
1
6
2
提示
对于 的数据,保证最终点的编号最大不超过 ,且 ;
对于 的数据,保证最终点的编号最大不超过 ;
对于 的数据,保证最终点的编号最大不超过 ,且 。