atcoder#ABC165F. [ABC165F] LIS on Tree

[ABC165F] LIS on Tree

题目描述

N N 頂点の木があり、i i 番目の辺は頂点 ui u_i と頂点 vi v_i を結んでいます。 また、頂点 i i には整数 ai a_i が書かれています。 1 1 以上 N N 以下のすべての整数 k k に対して、次の問題を解いてください。

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

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

输入格式

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

N N a1 a_1 a2 a_2 ... ... aN a_N u1 u_1 v1 v_1 u2 u_2 v2 v_2 : : uN1 u_{N-1} vN1 v_{N-1}

输出格式

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

题目大意

给您一棵nn个节点的树,树的每个节点上都有一个值aia_i。现在要您求出从11号点到ii号点的路径上最长上升子序列的长度。

输入格式

第一行一个数nn,表示节点个数

第二行共nn个数,第ii个数表示aia_i,含义见题面

接下来共有n1n-1行,第两个数u,vu,v,表示uuvv之间存在一条边

输出格式

输出共包含nn行,每行只有一个数,第ii行的数表示从11号点到ii号点的路径上最长上升子序列的长度。

数据范围:

2n2e5,ai1e9,un,vn,uv2\le n\le 2e5,a_i\le 1e9, u\le n,v\le n,u\neq v

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

提示

制約

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

Sample Explanation 1

例えば、頂点 1 1 から頂点 5 5 までの最短パス上の頂点に書かれている整数を頂点 1 1 に近い方から順に並べた数列 A A 1,2,5,3,4 1,2,5,3,4 です。この数列の最長増加部分列は A1 A_1 , A2 A_2 , A4 A_4 , A5 A_5 であり、この長さは 4 4 です。