#HD202508J. 最好的位置

    ID: 1340 传统题 3000ms 512MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>树结构最近公共祖先最近公共祖先树的直径

最好的位置

EE 居住在一棵树上,ta 发现此时正是果实成熟的时节。

这棵树包含 nn 个节点,编号为 11nn,每条边长度为 11

每个节点 ii 都被赋予了一个唯一的权值 wiw_i。这些权值恰好是 00n1n−1 的一个排列,代表这些果实成熟的时刻。

现在,为了方便采摘,小 EE 定义一系列动态增长的节点集合:

对于每个 m=0,1,,n1m=0,1,\dots,n−1,定义节点集合 SmS_m 为所有权值小于或等于 mm 的节点的集合。即:

Sm={uwum}S_m=\{u\mid w_u\leq m\}

表示时刻 mm 成熟果子节点集合。

对于每一个集合 SmS_m,你需要找到一个“最佳采摘点” xx 和一个“最小覆盖半径” kk,使得所有在 SmS_m 中的节点都位于以 xx 为中心、kk 为半径的“邻域”内(即对于所有 uSmu\in S_m,都有 dist[x,u]kdist[x,u]\leq k)。节点 xx 可以是树上的任意一个节点(不一定在 SmS_m 中)。

你的任务是,对于每个 mm(从 00n1n−1),计算出这个最小的覆盖半径 kk

输入格式

本题有多组测试数据。第一行一个正整数 TT,表示数据组数,接下来输入每组测试数据。

对于每组测试数据:

第一行包含一个正整数 nn
第二行包含 nn 个整数 w1,w2,,wnw_1,w_2,\dots,w_n,表示每个节点果实成熟时间。输入保证这是一个 00n1n−1 的排列。
接下来的 n1n−1 行,每行包含两个整数 u,vu,v,表示一条连接节点 uuvv 的边,长度为 11

输出格式

对于每组数据,输出 nn 行,每行一个正整数,第 ii 行表示 Si1S_{i−1} 的最小覆盖半径。

样例

输入

3
6
4 3 1 0 2 5
5 1
6 2
2 3
1 2
3 4
6
5 3 4 2 0 1
4 3
1 2
3 2
4 6
1 5
6
4 1 2 3 5 0
4 6
3 4
1 2
3 2
5 1

输出

0
1
2
2
2
2
0
3
3
3
3
3
0
2
2
2
2
3

提示

对于全部数据,T10T\leq 102n2×1052\leq n\leq 2\times 10^50wi<n0\leq w_i<n1u,vn1\leq u,v\leq n,保证输入是一棵树,ww0n10∼n−1 的全排列。