题目描述
在一家公司里有 $n$ 个雇员,编号从 $1$ 到 $n$ 。
第一个雇员是该公司的最高领导者,他没有任何的上级领导。每个雇员 $i$ 都会有一个唯一直接上级 $p_i$ 。
如果雇员 $x$ 被认为是雇员 $y$ 的上级领导,那么以下条件将会被满足:
- 雇员 $x$ 是雇员 $y$ 的直接上级。
- 雇员 $x$ 是雇员 $y$ 的直接上级的直接上级。
这家公司以这样的管理结构进行管理,其中,最高领导者是所有人的上级领导。
最近,一场编程比赛即将进行。比赛将以两个人组一个队伍的形式进行。然而,如果有一位雇员所在的队伍中有他的上级领导,那么他们在一起将会很不舒服。所以,我们队伍成员之间不能有上下级关系。注意,一个雇员不能加入多于一个以上的队伍。
你的任务是在前面的规则前提下,计算最大的可能的组队数量。
输入
第一行包含一个整数 $t$ ,表示测试样例的数量。
对于每个测试样例,第一行包含一个整数 $n$ ,表示雇员的总数量。
第二行包含 $n - 1$ 个整数 $p_2, p_3, \dots, p_n$ ,其中 $p_i$ 是雇员 $i$ 的直接上级。
输出
对于每个测试样例,输出一个整数,表示在前面的规则前提下,最大的可能的组队数量。
样例输入1
复制
6 4 1 2 1 2 1 5 5 5 5 1 7 1 2 1 1 3 3 7 1 1 3 2 2 4 7 1 2 1 1 1 3
样例输出1
复制
1 0 1 3 3 3
提示
## 数据范围
对于 $100\%$ 的数据,保证:
$1 \le t \le 10^{4},\ 2 \leq n \leq 2 \times 10^5,\ 1 \le p_i \le n$ 。
保证所有测试样例中 $n$ 的总和不会超过 $2 \times 10 ^ 5$ 。
## 样例解释
在第一个样例,队伍 $(3, 4)$ 可以被建立。
在第二个样例,没有队伍可以建立,因为只有两个雇员,并且其中一个是另外一个直接上级。
在第三个样例, 队伍 $(2, 3)$ 可以被建立。
在第四个样例,队伍 $(2, 4), (3, 5)$ 和队伍 $(6, 7)$ 可以被建立。
在第五个样例,队伍 $(2, 3), (6, 4)$ 和队伍 $(5, 7)$ 可以被建立。
来源/分类
每日一题 贪心 动态规划