CF2071C.Trapmigiano Reggiano
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在一个意大利村庄中,一只饥饿的老鼠从给定树 ∗ 的顶点 st 出发,该树包含 n 个顶点。
给定一个长度为 n 的排列 p †,共有 n 个步骤。在第 i 步时:
- 一块诱人的帕尔马干酪出现在顶点 pi。若老鼠当前位于顶点 pi,它将停留并享用;否则,它将沿简单路径向 pi 移动一条边。
你的任务是找到这样的排列,使得经过所有 n 步后,老鼠必定到达陷阱所在的顶点 en。
注意:老鼠必须在完成所有 n 步后到达 en,但在过程中可能提前经过 en。
∗ 树是一个无环的连通图。
† 长度为 n 的排列是由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是排列,但 [1,2,2] 不是排列(数字 2 重复出现),[1,3,4] 也不是排列(当 n=3 时出现数字 4)。
输入格式
每个测试包含多个测试用例。第一行包含测试用例数量 t(1≤t≤104)。接下来是各个测试用例的描述。
每个测试用例的第一行包含三个整数 n、st 和 en(1≤n≤105;1≤st,en≤n)——分别表示树的顶点数、起始顶点和陷阱顶点。
接下来的 n−1 行每行包含两个整数 u 和 v(1≤u,v≤n,u=v)——表示通过边连接的顶点编号。
保证输入的边构成一棵树。
保证所有测试用例的 n 之和不超过 105。
输出格式
对于每个测试用例:
- 若无解,输出 −1;
- 否则,输出 n 个整数 p1,p2,…,pn,表示干酪在顶点出现的顺序,确保老鼠最终落入陷阱顶点 en。
若存在多个解,输出任意一个即可。
输入输出样例
输入#1
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 1 2 3 1 2 1 4 3 2 6 5
说明/提示
第一个测试用例中,当 n=1 时唯一可能的排列是 p=[1],成功捕获老鼠:
st=1p1=11=en.
第二个测试用例中,当 n=2 时一个可能的排列是 p=[1,2]:
st=1p1=11p2=22=en.
第三个测试用例中,当 n=3 时一个可能的排列是 p=[3,1,2]:
st=2p1=33p2=12p3=22=en.
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?