#YDOIp2023A. 超正经的树上问题

超正经的树上问题

题目描述

给定一棵 nn 个结点的树,结点编号 1n1\sim n

现在另外给出一个参数 kk,求树中所有满足以下要求的结点 uu

p,qTu,pq>k\forall p,q\notin T_u, |p-q|> k

其中 TuT_u 表示 uu 的子树,pq|p-q| 表示两个点编号差的绝对值。

输入格式

输入的第一行有两个正整数 n,kn,k,表示结点个数和参数。

第二行有 nn 个正整数 f1,f2,,fnf_1,f_2,\ldots,f_n,表示每个结点的父亲结点,特别地,根的父亲为 00

输出格式

一行若干个整数,按照编号从小到大的顺序输出符合题意的结点。

样例 #1

样例输入 #1

6 1
6 4 1 1 4 0

样例输出 #1

1 4 6

样例 #2,3,4

点我下载大样例

样例 2,3,42,3,4 分别满足测试点 8,9,128,9,12 的限制。

提示

【样例解释】

以结点 44 为例,其子树外结点有 1,3,61,3,6,任意两个结点编号差都超过了 k=1k=1

而叶子结点 33 的子树外有 1,2,4,5,61,2,4,5,6,你可以选出两个结点,编号差不超过 k=1k=1

【数据范围】

测试点编号 nn\le 特殊性质
131\sim 3 100100
454\sim 5 10001000
686\sim 8 10410^4
9119\sim 11 3×1053\times 10^5 所有结点孩子数不超过11
121412\sim 14 树根到任意一点的边数不超过4040
1515 前序遍历从小到大有序
162016\sim 20

对于全体数据,保证 1kn3×1051\le k\le n\le 3\times 10^5ff 数列构成一棵树。