#CF2071C. C. 特拉普米贾诺·雷贾诺(陷阱奶酪)
C. 特拉普米贾诺·雷贾诺(陷阱奶酪)
C. 特拉普米贾诺·雷贾诺(陷阱奶酪)
每个测试的时间限制: 秒
每个测试的内存限制: MB
在意大利的一个村庄里,一只饥饿的老鼠从一棵给定树∗的顶点 出发。树有 个顶点。
给定一个长度为 的排列 †,一共进行 步。第 步的过程如下:
- 一块诱人的帕尔马干酪出现在顶点 。
- 如果老鼠当前正好在顶点 ,它会停留在原地享受奶酪。
- 否则,它会沿着前往顶点 的简单路径向 移动一条边。
你的任务是找到一个排列,使得经过全部 步后,老鼠必定到达顶点 ,而陷阱正设在那里。
注意:老鼠必须在全部 步结束后到达 ,但它可以在过程中提前经过 。
∗ 树是一个没有环的连通图。
† 长度为 的排列是一个由 个不同的整数 到 组成的数组,顺序任意。
例如, 是一个排列,但 不是排列( 出现了两次), 也不是排列( 但数组中出现了 )。
输入格式
每个测试包含多个测试用例。
第一行包含测试用例的数量 ()。
每个测试用例的描述如下:
- 第一行包含三个整数 (,)—— 树的顶点数、老鼠的起点、陷阱所在顶点。
- 接下来的 行,每行包含两个整数 和 (,)—— 表示树中连接顶点 和 的一条边。
保证这些边构成一棵树。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例:
- 如果不存在这样的排列,输出 。
- 否则,输出 个整数 ,表示奶酪出现在各顶点的顺序,确保老鼠最终会在顶点 被抓住。
如果存在多个解,输出任意一个。
示例
输入
4
1 1 1
2 1 2
1 2
3 2 2
1 2
2 3
6 1 4
1 2
1 3
4 5
5 6
1 4
输出
1
1 2
3 1 2
1 4 3 2 6 5
说明
-
在第一个测试用例中,长度为 时只有一个排列 ,它成功抓住了老鼠:
。 -
在第二个测试用例中,一个可能的长度为 的排列是 :
$st = 1 \xrightarrow{p_1 = 1} 1 \xrightarrow{p_2 = 2} 2 = en$。 -
在第三个测试用例中,一个可能的长度为 的排列是 :
$st = 2 \xrightarrow{p_1 = 3} 3 \xrightarrow{p_2 = 1} 2 \xrightarrow{p_3 = 2} 2 = en$。