atcoder#ARC095D. [ARC095F] Permutation Tree

[ARC095F] Permutation Tree

题目描述

高橋くんには (1,2,...,n) (1,2,...,n) の順列 (p1,p2,...,pn) (p_1,p_2,...,p_n) を使い、 次の手順で木を作る能力があります。

頂点 1 1 、頂点 2 2 ... ... 、 頂点 n n を用意する。 各 i=1,2,...,n i=1,2,...,n について次の操作を行う。

  • pi = 1 p_i\ =\ 1 である場合、何もしない。
  • pi  1 p_i\ \neq\ 1 である場合、pj < pi p_j\ <\ p_i であるような j j のうち最大のものを j j' とする。 頂点 i i と 頂点 j j' の間に辺を貼る。

高橋くんはこの能力を使ってお気に入りの木を作ろうとしています。 高橋くんのお気に入りの木は 頂点 1 1 から頂点 n n n n 頂点からなり、 i i 番目の辺は頂点 vi v_i wi w_i を結んでいます。 適切な順列を使うことで、高橋くんのお気に入りの木と同型な木を作ることが可能か 判定して下さい。 可能な場合、そのような順列のうち辞書順で最も小さいものを求めて下さい。

输入格式

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

n n v1 v_1 w1 w_1 v2 v_2 w2 w_2 : : vn1 v_{n-1} wn1 w_{n-1}

输出格式

高橋くんのお気に入りの木と同型な木を作ることのできる順列が存在しない場合は -1 を出力せよ。 存在する場合は、辞書順で最小の順列を空白区切りで出力せよ。

题目大意

给定一棵树 T\rm T, 要求构造一个排列 pp .

对于每一个 pip_i ,找到最大的 jj 使得 pj<pip_j<p_i,然后在 i,ji,j 间连边。

问是否可以构造出与 T\rm T 同构的树。

如果可以,则给出字典序最小的排列。

n100,000n\leq 100,000

6
1 2
1 3
1 4
1 5
5 6
1 2 4 5 3 6
6
1 2
2 3
3 4
1 5
5 6
1 2 3 4 5 6
15
1 2
1 3
2 4
2 5
3 6
3 7
4 8
4 9
5 10
5 11
6 12
6 13
7 14
7 15
-1

提示

注意

木が同型であることの定義はwikipediaを参照して下さい。 直感的には、木と木が同型であるとは、頂点の番号を無視すると同じ木になることを言います。

制約

  • 2  n  105 2\ \leq\ n\ \leq\ 10^5
  • 1  vi, wi  n 1\ \leq\ v_i,\ w_i\ \leq\ n
  • 与えられるグラフは木である

Sample Explanation 1

(1, 2, 4, 5, 3, 6) (1,\ 2,\ 4,\ 5,\ 3,\ 6) という順列を使って木を作ると、次の図のようになります。 ![](https://img.atcoder.jp/arc095/db000b879402aed649a1516620eb1e21.png) これは入力のグラフと同型です。