CF1997D.Maximize the Root
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给你一棵有根的树,由 n 个顶点组成。树上的顶点从 1到 n 编号,根是顶点 1 。第 i 个顶点上的值为 ai。
你可以执行以下操作任意次(可以为零次):选择一个至少有一个子顶点的顶点 v; 将 av 增加 1 并且对于 v 的子树中的所有顶点 u 将 au 减少 1 (除了 v 本身)。但是,在每次操作之后,所有顶点上的值都应该是非负的。
你的任务是使用前面提到的运算来计算写在根上的最大可能值。
输入格式
第一行包含一个整数 t(1≤t≤104) 表示测试用例的数量。
每个测试用例的第一行为一个整数 n(2≤n≤2×105) 表示树中顶点的数量。
第二行包含 n 整数 $ a_1, a_2, \dots, a_n $ ( $ 0 \le a_i \le 10^9 $ ) 表示每个点的初始值。
第三行包含 n−1 整数 $ p_2,p_3,\dots,p_n (1 \le p_i \le n)$,其中 pi 是树中第 i 个顶点的父顶点。顶点 1 是根。
对输入的附加约束:所有测试用例的 n 之和不超过 $ 2 \times 10^5 $。
输出格式
对于每个测试用例,输出一个整数——使用前面提到的操作在根上写出的最大可能值。
输入输出样例
输入#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
输入解题思路,AI测评打分。不知道怎么写?