树的价值
题目描述
给定一棵 n 个结点的有根树,其中结点 1 为根,结点 i (2≤i≤n) 的父亲结点为结点 pi。
对于 1≤i≤n,定义结点 i 的深度 di 为结点 1 到结点 i 的简单路径的边数,也就是说,d1=0,di=dpi+1 (2≤i≤n)。定义有根树的高度 h 为所有结点的深度的最大值,即 h=maxi=1ndi。
给定高度的上界 m。在本题中,给定的有根树的高度不超过 m。
你需要给每个结点设置一个非负整数作为它的权值。对于 1≤i≤n,若结点 i 的权值为 ai,令 Si 表示结点 i 的子树中结点权值构成的集合。对于每一种权值设置方案,定义树的价值为 i=1∑nmex(Si),其中 mex(S) 表示不在集合 S 中的最小非负整数。
例如,若填入 a1=3,a2=2,a3=a4=0,a5=1,则 S1={0,1,2,3},S2={0,1,2},S3={0},S4={0},S5={1},树的价值为 4+3+1+1+0=9。
示意图见:1.pdf。
你需要求出,在所有权值设置方案中,树的价值的最大值。
输入格式
本题包含多组测试数据。
输入的第一行包含一个正整数 t,表示测试数据组数。
接下来依次输入每组测试数据,对于每组测试数据:
- 第一行包含两个正整数 n,m,分别表示结点数量与高度的上界。
- 第二行包含 n−1 个正整数 p2,p3,…,pn,分别表示每个结点的父亲结点。
输出格式
对于每组测试数据,输出一行一个非负整数,表示树的价值的最大值。
样例 1
输入:
2
5 2
1 1 2 2
7 2
1 1 2 2 2 3
输出:
9
13
该样例共包含两组测试数据。
对于第一组测试数据,可以设置 a1=3,a2=2,a3=a4=0,a5=1,则树的价值为 4+3+1+1+0=9。
对于第二组测试数据,可以设置 a1=4,a2=3,a4=2,a3=a6=1,a5=a7=0,则树的价值为 5+4+2+0+1+0+1=13。
更多样例
- 样例 2 输入,样例 2 输出:满足测试点 3,4 的约束条件。
- 样例 3 输入,样例 3 输出:满足测试点 7,8 的约束条件。
- 样例 4 输入,样例 4 输出:满足测试点 13,14 的约束条件。
- 样例 5 输入,样例 5 输出:满足测试点 18,19 的约束条件。
数据范围
对于所有测试数据,均有:
- 1≤t≤5;
- 2≤n≤8,000;
- 1≤m≤min(n−1,800);
- 对于所有 2≤i≤n,均有 1≤pi≤i−1。
| 测试点编号 |
n <= |
m <= |
| 1-2 |
7 |
n - 1 |
| 3-4 |
13 |
| 5-6 |
18 |
| 7-8 |
40 |
| 9-10 |
120 |
| 11-12 |
360 |
| 13-14 |
4,000 |
2 |
| 15-17 |
10 |
| 18-19 |
50 |
| 20-25 |
8,000 |
800 |