atcoder#ABC165F. [ABC165F] LIS on Tree

[ABC165F] LIS on Tree

配点 : 600600

問題文

NN 頂点の木があり、ii 番目の辺は頂点 uiu_i と頂点 viv_i を結んでいます。 また、頂点 ii には整数 aia_i が書かれています。 11 以上 NN 以下のすべての整数 kk に対して、次の問題を解いてください。

  • 頂点 11 から頂点 kk までの最短パス上の頂点に書かれている整数を頂点 11 に近い方から順に並べた数列の最長増加部分列の長さはいくつか。

なお、長さ LL の数列 AA の最長増加部分列とは、1i1<i2<...<iML1 \leq i_1 < i_2 < ... < i_M \leq L かつ Ai1<Ai2<...<AiMA_{i_1} < A_{i_2} < ... < A_{i_M} を満たす部分列 Ai1,Ai2,...,AiMA_{i_1} , A_{i_2} , ... , A_{i_M} の中で 最も MM が大きいものをいいます。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1ai1091 \leq a_i \leq 10^9
  • 1ui,viN1 \leq u_i , v_i \leq N
  • uiviu_i \neq v_i
  • 与えられるグラフは木である。
  • 入力はすべて整数である。

入力

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

NN

a1a_1 a2a_2 ...... aNa_N

u1u_1 v1v_1

u2u_2 v2v_2

::

uN1u_{N-1} vN1v_{N-1}

出力

NN 行出力せよ。kk 行目には、頂点 11 から頂点 kk までの最短パス上の頂点に書かれている整数を頂点 11 に近い方から順に並べた数列の最長増加部分列の長さを出力せよ。

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

例えば、頂点 11 から頂点 55 までの最短パス上の頂点に書かれている整数を頂点 11 に近い方から順に並べた数列 AA1,2,5,3,41,2,5,3,4 です。この数列の最長増加部分列は A1A_1 , A2A_2 , A4A_4 , A5A_5 であり、この長さは 44 です。