#P10560. [ICPC 2024 Xi'an I] Holes and Balls

[ICPC 2024 Xi'an I] Holes and Balls

Description

给定 nn 个球,第 ii 个球的值为 pip_i。保证 p1,p2,,pnp_1,p_2,\dots,p_n1,2,3,n1,2,3\dots,n 的一个排列。

有一棵有根树,包含 nn 个顶点,每个顶点是一个洞,每个洞只能容纳一个球。

树的根是第一个顶点。

现在你需要用这些球填满洞。

你需要按 11nn 的顺序依次投掷每个球,步骤如下:

  1. 将球投到顶点 11
  2. 设球所在的顶点为 pp
  3. 如果第 pp 个顶点已经被其他球填满,你需要选择一个顶点 xx,将球投到第 xx 个顶点,然后返回步骤 22。你需要保证第 xx 个顶点是第 pp 个顶点的子节点,并且第 xx 个顶点的子树中至少有一个顶点未被填满。
  4. 否则,球将填满第 pp 个顶点。

投完所有球后,用 aia_i 表示第 ii 个顶点中球的值。

你需要找到 {an}\{a_n\} 的最小字典序。

我们定义 depidep_i 为从第 ii 个顶点到树根(第一个顶点)的路径上的顶点数。

特别地,对于任意两个顶点 x<yx<y,保证 depxdepydep_x\le dep_y

Input Format

第一行包含一个整数 n(1n5×105)n(1\le n\le 5\times 10^5),表示这棵树的顶点数。

接下来一行包含 nn 个数字,第 ii 个数字是 pi(1pin)p_i(1\le p_i\le n)。保证 p1,p2,,pnp_1,p_2,\dots,p_n1,2,3,n1,2,3\dots,n 的一个排列。

接下来的 n1n-1 行描述了树的边。第 ii 行包含两个整数 uiu_ivi(1ui,vin)v_i(1\le u_i,v_i\le n),表示第 ii 条边连接的顶点编号。

保证给定的边构成一棵树。

并且对于任意顶点 x<yx<y,保证 depxdepydep_x\le dep_y

Output Format

输出 nn 个整数,表示 {an}\{a_n\} 的最小字典序。

5
3 1 5 4 2
1 2
2 3
3 4
4 5

3 1 5 4 2
9
9 2 6 3 5 7 1 4 8
1 2
1 3
2 4
2 5
3 6
3 7
4 8
4 9

9 2 1 3 6 4 8 5 7

Hint

(由 ChatGPT 4o 翻译)