#HD202508J. 最好的位置
最好的位置
小 居住在一棵树上,ta 发现此时正是果实成熟的时节。
这棵树包含 个节点,编号为 到 ,每条边长度为 。
每个节点 都被赋予了一个唯一的权值 。这些权值恰好是 到 的一个排列,代表这些果实成熟的时刻。
现在,为了方便采摘,小 定义一系列动态增长的节点集合:
对于每个 ,定义节点集合 为所有权值小于或等于 的节点的集合。即:
表示时刻 成熟果子节点集合。
对于每一个集合 ,你需要找到一个“最佳采摘点” 和一个“最小覆盖半径” ,使得所有在 中的节点都位于以 为中心、 为半径的“邻域”内(即对于所有 ,都有 )。节点 可以是树上的任意一个节点(不一定在 中)。
你的任务是,对于每个 (从 到 ),计算出这个最小的覆盖半径 。
输入格式
本题有多组测试数据。第一行一个正整数 ,表示数据组数,接下来输入每组测试数据。
对于每组测试数据:
第一行包含一个正整数 。
第二行包含 个整数 ,表示每个节点果实成熟时间。输入保证这是一个 到 的排列。
接下来的 行,每行包含两个整数 ,表示一条连接节点 和 的边,长度为 。
输出格式
对于每组数据,输出 行,每行一个正整数,第 行表示 的最小覆盖半径。
样例
输入
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
提示
对于全部数据,,,,,保证输入是一棵树, 是 的全排列。