题目描述
给定一棵 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=1nmex(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。

你需要求出,在所有权值设置方案中,树的价值的最大值。
输入格式
本题包含多组测试数据。
输入的第一行包含一个正整数 t,表示测试数据组数。
接下来依次输入每组测试数据,对于每组测试数据:
- 第一行包含两个正整数 n,m,分别表示结点数量与高度的上界。
- 第二行包含 n−1 个正整数 p2,p3,…,pn,分别表示每个结点的父亲结点。
输出格式
对于每组测试数据,输出一行一个非负整数,表示树的价值的最大值。
输入输出样例 #1
输入 #1
2
5 2
1 1 2 2
7 2
1 1 2 2 2 3
输出 #1
9
13
说明/提示
【样例 1 解释】
该样例共包含两组测试数据。
对于第一组测试数据,可以设置 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】
见选手目录下的 tree/tree2.in 与 tree/tree2.ans。
该样例满足测试点 3,4 的约束条件。
【样例 3】
见选手目录下的 tree/tree3.in 与 tree/tree3.ans。
该样例满足测试点 7,8 的约束条件。
【样例 4】
见选手目录下的 tree/tree4.in 与 tree/tree4.ans。
该样例满足测试点 13,14 的约束条件。
【样例 5】
见选手目录下的 tree/tree5.in 与 tree/tree5.ans。
该样例满足测试点 18,19 的约束条件。
【数据范围】
对于所有测试数据,均有:
- 1≤t≤5;
- 2≤n≤8,000,1≤m≤min(n−1,800);
- 对于所有 2≤i≤n,均有 1≤pi≤i−1;
- 给定的有根树的高度不超过 m。
| 测试点编号 |
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 |