CF1914F Programming Competition
题目描述
BerSoft 是 Berland 最大的 IT 公司。公司共有 $n$ 名员工,编号从 $1$ 到 $n$。
第 $1$ 号员工是公司的负责人,他没有上级。每个其他员工 $i$ 都有且只有一位直属上级 $p_i$。
如果满足以下任一条件,则称员工 $x$ 是员工 $y$ 的上级(可以是直接或间接的):
- 员工 $x$ 是员工 $y$ 的直属上级;
- 员工 $x$ 是员工 $y$ 的直属上级的上级。
BerSoft 的组织结构保证公司负责人是所有员工的上级。
即将举办一场编程比赛,需要组建两人一组的队伍。然而,如果队伍中的一名员工是另一名员工的上级,他们会感到不自在。因此,组队时要求两人之间不存在上级与下级关系。注意,每位员工最多只能参加一个队伍。
你的任务是计算在上述规则下,最多可以组建多少支队伍。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$),表示员工人数。
第二行包含 $n-1$ 个整数 $p_2, p_3, \dots, p_n$($1 \le p_i \le n$),其中 $p_i$ 表示第 $i$ 号员工的直属上级编号。
所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示在上述规则下最多可以组建的队伍数。
说明/提示
在第一个测试用例中,可以组建队伍 $(3, 4)$。
在第二个测试用例中,无法组队,因为只有两名员工且一人为另一人的上级。
在第三个测试用例中,可以组建队伍 $(2, 3)$。
在第四个测试用例中,可以组建队伍 $(2, 4)$、$(3, 5)$ 和 $(6, 7)$。
在第五个测试用例中,可以组建队伍 $(2, 3)$、$(6, 4)$ 和 $(5, 7)$。
由 ChatGPT 4.1 翻译