题目背景
水声细细的,山影静静的。
远处的山峰,颜色越来越浅,好像被天给收走了一样。
题目描述
给定一棵以 $1$ 为根,有 $n$ 个点的树。
现在,你需要从树上选出不相同的 $k$ 个点,令他们的集合为 $S$。
令集合 $T = \{\operatorname{lca}(x,y)|x,y \in S\}$。请注意,$x=y$ 是合法的。
你需要最大化集合 $T$ 的大小,并给出一组可行的构造方案。
输入格式
本题使用多组数据。
第一行一个正整数 $t$ 表示数据组数。
对于每组数据:
第一行两个整数 $n,k$,含义见题目描述。
第二行 $n-1$ 个整数 $f_2,f_3,f_4,\cdots,f_n$。其中 $f_i$ 表示点 $i$ 的父亲是 $f_i$。
输出格式
对于每组测试数据:
第一行一个整数表示集合 $T$ 的最大大小。
第二行输出 $k$ 个整数表示你选出的 $k$ 个点,若有多种方案,输出任意一个即可。
输入输出样例 #1
输入 #1
2
8 3
1 1 2 2 2 3 7
10 5
1 1 2 4 3 5 7 6 6
输出 #1
5
3 4 5
7
2 3 4 9 10
说明/提示
样例解释
第一组测试数据中,选出的点的 LCA 组成的集合是 $\{1,2,3,4,5\}$,可以证明无法组成大小更大的集合。
对于所有数据:
::cute-table{tuack}
| Subtask | $n\le$ | 特殊性质 | 分数 |
|---|---|---|---|
| 1 | $15$ | 无 | $7$ |
| 2 | $2000$ | ^ | $18$ |
| 3 | $10^5$ | A | $6$ |
| 4 | ^ | B | $16$ |
| 5 | ^ | C | $13$ |
| 6 | ^ | 无 | $40$ |
特殊性质 A:保证 $f_i=i-1$。
特殊性质 B:保证 $k\ge$ 叶子节点数量。
特殊性质 C:保证每个节点的儿子节点数量不超过 $2$。
对于 $100\%$ 的数据,保证 $1 \le t \le 10,2 \le k \le n \le 10^5$。
