问题陈述
我们有一个编号为1到N的树T。 T的第i条边连接顶点ui和顶点vi。
让我们使用T来定义排列P=(P1,P2,ldots,PN)((1,2,ldots,N)的一种排列)的相似性,具体如下。
- 对于树T中的一条简单路径x=(x1,x2,ldots,xk),设y=(Px1,Px2,ldots,Pxk)。相似性是x和y的最长公共子序列的最大可能长度。
构造一个相似性最小的排列P。
什么是子序列?序列的子序列是从该序列中删除零个或多个元素并连接剩余元素而不改变相对顺序得到的序列。例如,(10,30)是(10,20,30)的一个子序列,但(20,10)不是。什么是简单路径?对于图G中的顶点X和Y,从X到Y的一条路径是一个顶点序列v1,v2,ldots,vk,满足v1=X,vk=Y,且vi和vi+1之间有一条边相连。一个简单路径(或者说是路径)是这样一条路径,其中v1,v2,ldots,vk各不相同。
约束条件
- 2leqNleq5000
- 1lequi,vileqN
- 给定的图是一棵树。
- 输入中的所有数都是整数。
输入
输入以以下格式从标准输入给出:
N
u1 v1
u2 v2
vdots
uN−1 vN−1
输出
按照空格分隔打印一个相似性最小的排列P。如果存在多个解,则可以打印任意一个。
示例输入1
3
1 2
2 3
示例输出1
3 2 1
该排列的相似性为1,可以按照以下方式计算:
-
对于x=(1),我们有y=(P1)=(3)。 x和y的最长公共子序列的长度为0。
-
对于x=(2),我们有y=(P2)=(2)。 x和y的最长公共子序列的长度为1。
-
对于x=(3),我们有y=(P2)=(1)。 x和y的最长公共子序列的长度为0。
-
对于x=(1,2),我们有y=(P1,P2)=(3,2)。 x和y的最长公共子序列的长度为1。 对于(1,2)的逆序(2,1)同样如此。
-
对于x=(2,3),我们有y=(P2,P3)=(2,1)。 x和y的最长公共子序列的长度为1。 对于(2,3)的逆序(3,2)同样如此。
-
对于x=(1,2,3),我们有y=(P1,P2,P3)=(3,2,1)。 x和y的最长公共子序列的长度为1。 对于(1,2,3)的逆序(3,2,1)同样如此。
我们可以证明没有排列具有相似性为0或更小的,因此这个排列是一个有效的答案。
示例输入2
4
2 1
2 3
2 4
示例输出2
3 4 1 2
如果有多个排列具有最小的相似性,您可以打印其中任何一个。例如,也可以打印4 3 2 1
。