#ATarc156c. [ARC156C] Tree and LCS

[ARC156C] Tree and LCS

题目描述

有一棵编号为 11NN 的树 TTTT 的第 ii 条边(1iN11\leq i\leq N-1)连接了顶点 uiu_i 和顶点 viv_i

利用 TT,我们定义排列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N)11NN 的一个排列)的相似度如下:

  • 对于 TT 上任意的简单路径 x=(x1,x2,,xk)x=(x_1,x_2,\ldots,x_k),令 y=(Px1,Px2,,Pxk)y=(P_{x_1},P_{x_2},\ldots,P_{x_k})。此时,xxyy 的最长公共子序列的最大长度即为相似度。

请构造一个使相似度最小的排列 PP

子序列的定义
数列的子序列是指从数列中删除 00 个或多个元素后,按原顺序连接剩下元素得到的数列。例如,(10,30)(10,30)(10,20,30)(10,20,30) 的子序列,但 (20,10)(20,10) 不是 (10,20,30)(10,20,30) 的子序列。

简单路径的定义
在图 GG 上,顶点 X,YX,Y 间的顶点序列 v1,v2,,vkv_1,v_2,\ldots,v_k,满足 v1=Xv_1=Xvk=Yv_k=Y,且对于 1ik11\leq i\leq k-1viv_ivi+1v_{i+1} 有边相连,这样的序列称为从 XXYY步行。如果 v1,v2,,vkv_1,v_2,\ldots,v_k 均互不相同,则称为从 XXYY简单路径(或简称路径)。

输入格式

输入通过标准输入给出,格式如下:

NN
u1u_1 v1v_1
u2u_2 v2v_2
\vdots
uN1u_{N-1} vN1v_{N-1}

输出格式

请输出一个使相似度最小的排列 PP,用空格分隔。如果有多个解,输出任意一个均可。

样例 1

输入

3
1 2
2 3

输出

3 2 1

样例 2

输入

4
2 1
2 3
2 4

输出

3 4 1 2

说明/提示

限制条件

  • 2N50002\leq N\leq 5000
  • 1ui,viN1\leq u_i,v_i\leq N
  • 给定的图一定是一棵树
  • 输入的所有数均为整数

样例解释 1

输出样例中的排列的相似度为 11。具体计算如下:

  • x=(1)x=(1) 时,y=(P1)=(3)y=(P_1)=(3)xxyy 的最长公共子序列长度为 00
  • x=(2)x=(2) 时,y=(P2)=(2)y=(P_2)=(2)xxyy 的最长公共子序列长度为 11
  • x=(3)x=(3) 时,y=(P3)=(1)y=(P_3)=(1)xxyy 的最长公共子序列长度为 00
  • x=(1,2)x=(1,2) 时,y=(P1,P2)=(3,2)y=(P_1,P_2)=(3,2)xxyy 的最长公共子序列长度为 11。对于反向的 x=(2,1)x=(2,1) 也同理。
  • x=(2,3)x=(2,3) 时,y=(P2,P3)=(2,1)y=(P_2,P_3)=(2,1)xxyy 的最长公共子序列长度为 11。对于反向的 x=(3,2)x=(3,2) 也同理。
  • x=(1,2,3)x=(1,2,3) 时,y=(P1,P2,P3)=(3,2,1)y=(P_1,P_2,P_3)=(3,2,1)xxyy 的最长公共子序列长度为 11。对于反向的 x=(3,2,1)x=(3,2,1) 也同理。

可以证明不存在相似度小于等于 00 的排列,因此这就是答案。

样例解释 2

当存在多个使相似度最小的排列时,输出任意一个均可。例如,4 3 2 1 这样的输出也是正确答案。

由 ChatGPT 4.1 翻译