题目描述
有一个根为1的树,树上有n个顶点。每个顶点上都有一只怪物,第i个顶点上的怪物的血量是hpi。
Kotori 想要杀死所有的怪物。第 i 个顶点上的怪物可以被击败,前提是第 i 个顶点的直接父节点上的怪物已经被击败。击败第 i 个怪物所需的能量等于 hpi 加上所有其他活着的怪物的血量之和,这些怪物居住在一个顶点 j,而 j 的直接父节点是i。具体来说,能量等于
hpi+顶点j中的怪物还 活着并且i是j的直接父节点∑hpj
此外,Kotori可以使用一些魔法。如果使用一次魔法,她可以以 0 能量击败任意怪物,没有任何限制。也就是说,她可以选择一个怪物,即使父节点上的怪物还活着。
对于每个 m=0,1,2,⋯,n,Kotori 想知道分别使用m次魔法时杀死所有怪物所需的最小总能量。
输入格式
包含多个测试用例。第一行输入一个整数T表示测试用例的数量。对于每个测试用例:
第一行包含一个整数 n (2≤n≤2×103),表示顶点的数量。
第二行包含 (n−1) 个整数 p2,p3,⋯,pn (1≤pi<i),代表顶点i的直接父节点是pi。
第三行包含 n 个整数hp1,hp2,⋯,hpn (1≤hpi≤109),表示每只怪物的血量。
保证所有测试用例中 n 的和不超过 2×103。
输出格式
对于每个测试用例,输出一行,包含 (n+1) 个整数 a0,a1,⋯,an,以空格分隔,其中 am 表示小鸟在可以使用 m 次魔法时杀死所有怪物所需的最小总能量。
请注意,不要在每行末尾输出额外的空格,否则可能被判定为错误答案!