CF2071C.Trapmigiano Reggiano

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在一个意大利村庄中,一只饥饿的老鼠从给定树 ∗^{\text{∗}} 的顶点 st\textrm{st} 出发,该树包含 nn 个顶点。

给定一个长度为 nn 的排列 pp †^{\text{†}},共有 nn 个步骤。在第 ii 步时:

  • 一块诱人的帕尔马干酪出现在顶点 pip_i。若老鼠当前位于顶点 pip_i,它将停留并享用;否则,它将沿简单路径向 pip_i 移动一条边。

你的任务是找到这样的排列,使得经过所有 nn 步后,老鼠必定到达陷阱所在的顶点 en\textrm{en}。

注意:老鼠必须在完成所有 nn 步后到达 en\textrm{en},但在过程中可能提前经过 en\textrm{en}。

∗^{\text{∗}} 树是一个无环的连通图。

†^{\text{†}} 长度为 nn 的排列是由 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是排列,但 [1,2,2][1,2,2] 不是排列(数字 22 重复出现),[1,3,4][1,3,4] 也不是排列(当 n=3n=3 时出现数字 44)。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是各个测试用例的描述。

每个测试用例的第一行包含三个整数 nn、st\textrm{st} 和 en\textrm{en}(1≤n≤1051 \le n \le 10^5;1≤st,en≤n1 \le \textrm{st}, \textrm{en} \le n)——分别表示树的顶点数、起始顶点和陷阱顶点。

接下来的 n−1n-1 行每行包含两个整数 uu 和 vv(1≤u,v≤n1 \le u, v \le n,u≠vu \neq v)——表示通过边连接的顶点编号。

保证输入的边构成一棵树。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

对于每个测试用例:

  • 若无解,输出 −1-1;
  • 否则,输出 nn 个整数 p1,p2,…,pnp_1, p_2, \ldots, p_n,表示干酪在顶点出现的顺序,确保老鼠最终落入陷阱顶点 en\textrm{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=1n = 1 时唯一可能的排列是 p=[1]p = [1],成功捕获老鼠:

st=1→p1=11=en.\textrm{st} = 1 \overset{p_1 = 1}{\xrightarrow{\hspace{1.3cm}}} 1 = \textrm{en}.

第二个测试用例中,当 n=2n = 2 时一个可能的排列是 p=[1,2]p = [1, 2]:

st=1→p1=11→p2=22=en.\textrm{st} = 1 \overset{p_1 = 1}{\xrightarrow{\hspace{1.3cm}}} 1 \overset{p_2 = 2}{\xrightarrow{\hspace{1.3cm}}} 2 = \textrm{en}.

第三个测试用例中,当 n=3n = 3 时一个可能的排列是 p=[3,1,2]p = [3, 1, 2]:

st=2→p1=33→p2=12→p3=22=en.\textrm{st} = 2 \overset{p_1 = 3}{\xrightarrow{\hspace{1.3cm}}} 3 \overset{p_2 = 1}{\xrightarrow{\hspace{1.3cm}}} 2 \overset{p_3 = 2}{\xrightarrow{\hspace{1.3cm}}} 2 = \textrm{en}.

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页