#CF1997D. Maximize the Root
Maximize the Root
CF1997D Maximize the Root
题目描述
给你一棵有根的树,由 个顶点组成。树上的顶点从 到 编号,根是顶点 。第 个顶点上的值为 。
你可以执行以下操作任意次(可以为零次):选择一个至少有一个子顶点的顶点 ; 将 增加 并且对于 的子树中的所有顶点 将 减少 (除了 本身)。但是,在每次操作之后,所有顶点上的值都应该是非负的。
你的任务是使用前面提到的运算来计算写在根上的最大可能值。
输入格式
第一行包含一个整数 表示测试用例的数量。
每个测试用例的第一行为一个整数 表示树中顶点的数量。
第二行包含 整数 ( ) 表示每个点的初始值。
第三行包含 整数 ,其中 是树中第 个顶点的父顶点。顶点 是根。
对输入的附加约束:所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数——使用前面提到的操作在根上写出的最大可能值。
输入输出样例 #1
输入 #1
3
4
0 1 0 2
1 1 3
2
3 0
1
5
2 5 3 9 6
3 1 5 2
输出 #1
1
3
6