P17000 [NWERC 2019] 平衡裁剪 / Balanced Cut
题目背景
译自 [Northwestern Europe Regional Contest (NWERC) 2019](http://2019.nwerc.eu)。
题目描述
Anna van Lier 教授正在准备一节关于平衡二叉搜索树的课。回忆一下,平衡二叉搜索树具有两个性质:
- **平衡树:** 对每个结点,其左子树高度和右子树高度之差至多为 $1$。例如在下图中,结点 $7$ 的左、右子树高度分别为 $2$ 和 $1$。如果一个结点没有左子树或右子树,则对应子树的高度视为 $0$。
- **搜索树:** 每个结点有一个值。某个结点的值大于其左子树中的所有值,并且小于其右子树中的所有值。例如在下图中,结点 $7$ 的左子树包含值 $4,5,6$,它们都小于 $7$。
Anna 从同事那里得到了一张这样的树的图。这棵树有 $n$ 个结点,结点值为 $1$ 到 $n$。但是这棵树太大了,无法放进她的幻灯片中,所以她想把它变小。
具体来说,她想从树中擦除一些结点,使得最后恰好剩下 $k$ 个结点。每当她擦除一个结点时,也会一并擦除该结点的所有子树。当然,得到的树仍然必须是一棵平衡二叉搜索树。
出于教学目的,Anna 希望最终树中的结点值尽量小。因此,她希望剩下的 $k$ 个结点值组成的列表按字典序尽可能小。例如,与包含值 $2,6,7$ 的树相比,她更喜欢包含值 $2,5,9$ 的树。
Anna 忙于处理更重要的事情,因此寻找应该擦除哪些结点的任务就交给了她的助教,也就是你。
:::align{center}

:::
输入格式
输入包含:
- 第一行包含两个整数 $n$ 和 $k$ ($2 \le n \le 5\cdot 10^5$, $1 \le k \le n-1$),分别表示树中结点数和需要保留的结点数。
- 接下来 $n$ 行,第 $i$ 行包含一个整数 $p_i$ ($1\le p_i\le n$ 或 $p_i=-1$),表示值为 $i$ 的结点的父亲;若值为 $i$ 的结点是根,则 $p_i=-1$。
保证给定的树是一棵平衡二叉搜索树。
输出格式
输出一行长度为 $n$ 的二进制字符串。第 $i$ 个字符应为 `1`,当且仅当值为 $i$ 的结点应被保留;否则应为 `0`。
说明/提示
【数据规模与约定】
- $2 \le n \le 5\cdot 10^5$。
- $1 \le k \le n-1$。
- 对每个结点,$1\le p_i\le n$ 或 $p_i=-1$。
- 给定的树保证是一棵平衡二叉搜索树。