#arc156c. [arc156_c]Tree and LCS

[arc156_c]Tree and LCS

問題文

頂点に 11 から NN の番号がついた木 TT があります。 TTi(1leqileqN1)i\\ (1\\leq i \\leq N-1) 番目の辺は頂点 uiu_i と頂点 viv_i を結んでいます。

TT を用いて、(1,2,ldots,N)(1,2,\\ldots,N) の順列 P=(P1,P2,ldots,PN)P = (P_1,P_2,\\ldots,P_N)類似度を以下で定めます。

  • TT 上の任意の単純パス x=(x1,x2,ldots,xk)x=(x_1,x_2,\\ldots,x_k) に対して、y=(Px1,Px2,ldots,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,ldots,vkv_1,v_2, \\ldots, v_k であって、 v1=Xv_1=X, vk=Yv_k=Y かつ、1leqileqk11\\leq i\\leq k-1 に対して viv_ivi+1v_{i+1} が辺で結ばれているようなものを頂点 XX から頂点 YY への ウォーク と呼びます。 さらに、v1,v2,ldots,vkv_1,v_2, \\ldots, v_k がすべて異なるようなものを頂点 XX から頂点 YY への 単純パス (あるいは単に パス) と呼びます。

制約

  • 2leqNleq50002 \\leq N \\leq 5000
  • 1lequi,vileqN1\\leq u_i,v_i\\leq N
  • 与えられるグラフは木
  • 入力される数値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

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

出力

類似度が最小となるような順列 PP を空白区切りで出力せよ。解が複数存在する場合、どれを出力しても正解とみなされる。


入力例 1

3
1 2
2 3

出力例 1

3 2 1

出力例の順列の類似度は 11 となっています。これは、以下のように計算できます。

  • x=(1)x=(1) のとき y=(P1)=(3)y=(P_1)=(3) です。x,yx,y の最長共通部分列の長さは 00 です。

  • x=(2)x=(2) のとき y=(P2)=(2)y=(P_2)=(2) です。x,yx,y の最長共通部分列の長さは 11 です。

  • x=(3)x=(3) のとき y=(P3)=(1)y=(P_3)=(1) です。x,yx,y の最長共通部分列の長さは 00 です。

  • x=(1,2)x=(1,2) のとき y=(P1,P2)=(3,2)y=(P_1,P_2)=(3,2) です。x,yx,y の最長共通部分列の長さは 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) です。x,yx,y の最長共通部分列の長さは 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) です。x,yx,y の最長共通部分列の長さは 11 です。これを反転した x=(3,2,1)x=(3,2,1) についても同様です。

類似度が 00 以下の順列は存在しないことが証明できるので、これが答えとなります。


入力例 2

4
2 1
2 3
2 4

出力例 2

3 4 1 2

類似度が最小の順列が複数存在する場合、どれを出力してもよいです。例えば、4 3 2 1 といった出力も正解になります。