#CF1987E. Wonderful Tree!

Wonderful Tree!

CF1987E Wonderful Tree!

题目描述

神赐福于这个 ArrayForces!

一个随机的鹅卵石

给定一棵有 nn 个结点的树,根节点为 11。第 ii 个结点上写有一个整数 aia_i

LL 为结点 vv 的所有直接子节点的集合。若对于所有 LL 非空的结点 vv,都有 avuLaua_v \le \sum_{u \in L} a_u,则称这棵树是“美妙的”。每次操作,你可以选择任意一个结点 vv,将 ava_v 增加 11

请你求出最少需要多少次操作,才能使给定的树变为美妙的。

^{\text{∗}} 结点 uu 被称为结点 vv 的直接子节点,当且仅当:

  • uuvv 之间有一条边,并且
  • vv 在从 uu 到树根的唯一路径上。

输入格式

每组测试数据包含多组测试用例。输入的第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

每组测试用例的第一行包含一个整数 nn2n50002 \le n \le 5000),表示树的结点数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai1090 \le a_i \le 10^9),表示每个结点初始时写的值。

第三行包含 n1n-1 个整数 p2,p3,,pnp_2, p_3, \ldots, p_n1pi<i1 \le p_i < i),表示存在一条从结点 pip_i 到结点 ii 的边。保证给定的边能够构成一棵树。

保证所有测试用例中 nn 的总和不超过 50005000

输出格式

对于每组测试用例,输出一个整数,表示将树变为美妙的最少操作次数。

输入输出样例 #1

输入 #1

4
5
9 3 4 1 2
1 1 3 3
2
5 3
1
2
36 54
1
3
0 0 0
1 2

输出 #1

3
2
0
0

说明/提示

第一个测试用例中的树结构如下:

你可以对结点 55 操作一次,对结点 22 操作两次,使得树变为美妙的。

在第二个测试用例中,你可以对结点 22 操作两次,使得树变为美妙的。

在第三和第四个测试用例中,树本身已经是美妙的,因此不需要进行任何操作。

由 ChatGPT 4.1 翻译