#ABC165F. LIS on Tree

LIS on Tree

题目描述

We have a tree with NN vertices, whose ii-th edge connects Vertex uiu_i and Vertex viv_i. Vertex ii has an integer aia_i written on it. For every integer kk from 11 through NN, solve the following problem:

  • We will make a sequence by lining up the integers written on the vertices along the shortest path from Vertex 11 to Vertex kk, in the order they appear. Find the length of the longest increasing subsequence of this sequence.

Here, the longest increasing subsequence of a sequence AA of length LL is the subsequence Ai1,Ai2,...,AiMA_{i_1} , A_{i_2} , ... , A_{i_M} with the greatest possible value of MM such that 1i1<i2<...<iML1 \leq i_1 \lt i_2 \lt ... \lt i_M \leq L and Ai1<Ai2<...<AiMA_{i_1} \lt A_{i_2} \lt ... \lt A_{i_M}.

我们有一棵有 NN 个顶点的树,其 ii 条边连接顶点 uiu_i 和顶点 viv_i 。顶点 ii 上写有一个整数 aia_i 。求从 11NN 的每一个整数 kk 的解:

  • 我们将沿着顶点 11 到顶点 kk 的最短路径,把写在顶点上的整数按出现的先后顺序排成一个序列。求这个序列中最长的递增子序列的长度。

这里,长度为 LL 的序列 AA 的最长递增子序列是 Ai1,Ai2,...,AiMA_{i_1} , A_{i_2} , ... , A_{i_M} 的最大可能值 MM 的子序列 Ai1,Ai2,...,AiMA_{i_1} , A_{i_2} , ... , A_{i_M} ,即 1i1<i2<...<iML1 \leq i_1 \lt i_2 \lt ... \lt i_M \leq LAi1<Ai2<...<AiMA_{i_1} \lt A_{i_2} \lt ... \lt A_{i_M}

输入格式

输入内容按以下格式标准输入:

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 的最短路径所得到的序列的最长递增子序列的长度。

样例 #1

样例输入 #1

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

1
2
3
3
4
4
5
2
2
3

说明

数据规模与约定

  • 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
  • 给定图形是一棵树。
  • 输入值均为整数。

样例 11 解释

例如,从顶点 11 到顶点 55 的最短路径得到的序列 AA1,2,5,3,41,2,5,3,4 。它的最长递增子序列是 A1,A2,A4,A5A_1, A_2, A_4, A_5 ,长度为 44