题库/S0153

#S0153. 【25NOIP提高组】树的价值(tree)

    传统题 难度: 省选 标签>一本通状态定义、转移与边界计算顺序与答案位置DFS进入序与子树区间线段树优化DP差分树状数组区间加点查
时间限制2000 ms
内存限制512 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

S0153 · 【25NOIP提高组】树的价值(tree)

退出在线编程模式
省选 读懂题意,让每一次思考成为成长。
时间限制2000 ms
内存限制512 MiB
通过率—0 / 0 次提交

题目描述

给定一棵 nn 个结点的有根树,其中结点 11 为根,结点 i(2≤i≤n)i (2 ≤ i ≤ n) 的父亲结点为结点 pip_i。 对于 1≤i≤n1 ≤ i ≤ n,定义结点 ii 的深度did_i 为结点 11 到结点 ii 的简单路径的边数,也就是说,d1=0d_1 = 0,di=dpi+1(2≤i≤n)d_i = d_{p_i} + 1 (2 ≤ i ≤ n)。定义有根树的高度hh 为所有结点的深度的最大值,即 h=maxi−1ndih = max_{i-1}^{n}d_i。 给定高度的上界 mm。在本题中,给定的有根树的高度不超过mm。 你需要给每个结点设置一个非负整数作为它的权值。对于 1≤i≤n1 ≤ i ≤ n,若结点 ii 的权值为 aia_i,令 SiS_i 表示结点 ii 的子树中结点权值构成的集合。对于每一种权值设置方案,定义树的价值为∑i=1nmex(Si)\sum^{n}_{i=1}mex(S_i),其中 mex(S)mex(S) 表示不在集合S 中的最小非负整数。例如,在下图中,若设置 a1=3a_1 = 3,a2=2a_2 = 2,a3=a4=0a_3 = a_4 = 0,a5=1a_5 = 1,则 S1={0,1,2,3}S_1 = \{0, 1, 2, 3\},S2={0,1,2}S_2 = \{0, 1, 2\},S3={0}S_3 = \{0\},S4={0}S_4 = \{0\},S5={1}S_5 = \{1\},树的价值为 4+3+1+1+0=94 + 3 + 1 + 1 + 0 = 9。 题面插图 你需要求出,在所有权值设置方案中,树的价值的最大值。

输入

本题包含多组测试数据。 输入的第一行包含一个正整数 tt,表示测试数据组数。 接下来依次输入每组测试数据,对于每组测试数据: • 第一行包含两个正整数 nn, mm,分别表示结点数量与高度的上界。 • 第二行包含 n−1n − 1 个正整数 p2,p3,...,pnp_2, p_3, . . . , p_n,分别表示每个结点的父亲结点。

输出

对于每组测试数据,输出一行一个非负整数,表示树的价值的最大值。

输入样例

2
5 2
1 1 2 2
7 2
1 1 2 2 2 3

输出样例

9
13

提示

【样例 1 解释】 该样例共包含两组测试数据。 对于第一组测试数据,可以设置 a1=3a_1 = 3,a2=2a_2 = 2,a3=a4=0a_3 = a_4 = 0,a5=1a_5 = 1,则树的价值为 4+3+1+1+0=94 + 3 + 1 + 1 + 0 = 9。 对于第二组测试数据,可以设置 a1=4a_1 = 4,a2=3a_2 = 3,a4=2a_4 = 2,a3=a6=1a_3 = a_6 = 1,a5=a7=0a_5 = a_7 = 0,则树的价值为 5+4+2+0+1+0+1=135 + 4 + 2 + 0 + 1 + 0 + 1 = 13。 【数据范围】 对于所有测试数据,均有: • 1≤t≤51 ≤ t ≤ 5; • 2≤n≤8,0002 ≤ n ≤ 8, 000,1≤m≤min(n−1,800)1 ≤ m ≤ min(n − 1, 800); • 对于所有 2≤i≤n2 ≤ i ≤ n,均有 1≤pi≤i−11 ≤ p_i ≤ i − 1; • 给定的有根树的高度不超过 mm。

测试点编号 n ≤ m ≤
1,2 7 n-1
3,4 13
5,6 18
7,8 40
9,10120
11,12360
13,144,0002
15 ∼1710
18,1950
20 ∼258,000800

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共7个测试点,非原站或官方原始数据。总分100分。