题目描述
给定一棵 n 个结点的树,结点编号 1∼n。
现在另外给出一个参数 k,求树中所有满足以下要求的结点 u:
∀p,q∈/Tu,∣p−q∣>k
其中 Tu 表示 u 的子树,∣p−q∣ 表示两个点编号差的绝对值。
输入格式
输入的第一行有两个正整数 n,k,表示结点个数和参数。
第二行有 n 个正整数 f1,f2,…,fn,表示每个结点的父亲结点,特别地,根的父亲为 0。
输出格式
一行若干个整数,按照编号从小到大的顺序输出符合题意的结点。
样例 #1
样例输入 #1
样例输出 #1
样例 #2,3,4
点我下载大样例
样例 2,3,4 分别满足测试点 8,9,12 的限制。
提示
【样例解释】
以结点 4 为例,其子树外结点有 1,3,6,任意两个结点编号差都超过了 k=1。
而叶子结点 3 的子树外有 1,2,4,5,6,你可以选出两个结点,编号差不超过 k=1。
【数据范围】
测试点编号 |
n≤ |
特殊性质 |
1∼3 |
100 |
|
4∼5 |
1000 |
6∼8 |
104 |
9∼11 |
3×105 |
所有结点孩子数不超过1 |
12∼14 |
树根到任意一点的边数不超过40 |
15 |
前序遍历从小到大有序 |
16∼20 |
|
对于全体数据,保证 1≤k≤n≤3×105,f 数列构成一棵树。