这是一个“运行两次”的问题。
老实说,作者在写完题目背景的第二天就满 27 岁了,他不指望收到任何关于随机打乱的树作为礼物,所以你们将不得不接受没有关于奇怪生日礼物的故事。
相反,这就是题目中发生的事情。在每次运行中,你都会得到一棵随机打乱的树。作为无标号树,它在两次运行中是同一棵树。保证树是随机打乱的,并且在两次运行中可能以不同的方式打乱(作为有标号树,这两棵树可能不同)。你的任务是对两棵树的顶点进行置换,使得这两棵树作为有标号树变得相同。
输入格式
第一行包含一个整数 $n$:树的顶点数 ($2 \le n \le 2 \cdot 10^5$)。
接下来的 $n - 1$ 行,每行包含两个整数 $v$ 和 $u$ ($1 \le v, u \le n$),表示一条边的两个端点。
输出格式
在一行中输出一个顶点的排列,用空格分隔。
当且仅当对于所有的 $i$ 和 $j$,在你的输出中第 $i$ 个顶点和第 $j$ 个顶点之间存在边的情况在两次运行中完全一致(要么两次都有边,要么两次都没有边)时,你的答案才会被认为是正确的。
形式化地说,设你两次运行的输出分别为 $p_1, p_2, \dots, p_n$ 和 $q_1, q_2, \dots, q_n$。对于所有的 $i$ 和 $j$,边 $p_i-p_j$ 存在于第一次输入中,当且仅当边 $q_i-q_j$ 存在于第二次输入中。
样例
样例输入 1
7 2 1 7 1 3 7 4 7 6 5 5 2
样例输出 1
1 2 3 4 5 6 7
样例输入 2
7 1 5 6 7 3 6 2 3 2 1 1 4
样例输出 2
2 3 4 5 6 7 1