#1054. 1-06G. nocriz和巨佬谈人生

内存限制:512 MiB 时间限制:750 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: nocriz🦆

题目描述

nocriz是一名对人生充满向往的同学。

他和巨佬AprilGrimoire谈起了人生。nocriz提出,人生就如一个不回溯的搜索,你并不知道前面有什么。AprilGrimoire说,其实作为巨佬的人,是可以知道前面有什么的。nocriz在Orz之余,说即使对于巨佬有一些路能够走的人是有限的,比如AprilGrimoire巨佬就可以走一条只有50 15 4 他自己 1 个人可以走的路。

AprilGrimoire巨佬将人生建模成了一颗树。树上不同的结点有着不同的优劣程度。一个人从根节点出发,每一次朝着可达结点编号最小的空子结点出发。具体的说,假如当前节点有且仅有一个空儿子节点,那么人就会移动到那个节点。假如有多个空儿子节点,那么人会遵循如下过程:假设人所在当前节点为 ,人会先寻找以 节点为根的子树中编号最小并且和当前结点路径上有空结点的的节点,然后判断这个节点属于哪个以 的空儿子为根的子树,最后移动到那个空儿子节点中。人会一直移动直到到达没有空儿子的节点。如图所示:两个人从节点 处开始了他们的人生。因为编号最小的节点 在以 为根的子树中,所以第一个人走到了节点 ,然后 最后移动到了节点 。同理,第个人从节点 走到了节点 并且停了下来。

ZMh9vd.png

还有可能有时候人消失了,那么原先的节点就变为空节点,那么假如它的父节点有人,那么人就会走过来。比如,如图所示:假如我们在 5,7 和 8 号节点的人消失了,那么在一系列人移动之后,1,2,3 号节点就变空了。

ZMhPKA.png

nocriz觉得这实在太真实,于是他记录下了这个模型,并想用计算机模拟模拟。

有一颗个节点的树,有两种操作

  • 从树根逐次生成个人
  • 将某个节点清空,节点上的人会消失,其他人会填过来

输入格式

第一行两个正整数 代表有 个节点, 代表有 次操作。 下面 行,每行一个整数。第 行的整数表示编号为 的节点的父亲节点的编号。如

果整数为 0 则说明该节点是根节点。 下面 行,每行表示一个操作。

  • 操作一:1 k 表示从树根逐次生成个人
  • 操作二:2 x 表示将编号为 x 的节点清空。

保证所有操作合法,不会有人无处可去也不会清空空节点。

输出格式

对于操作一,输出人最后走到的节点编号。

对于操作二,输出清空节点之后,有移动的人的数量。

样例

输入样例

8 4 
0
1
2
2
3
3
4
6 
1 8 
2 5 
2 7 
2 8

输出样例

1
3
2
2

样例2见附加文件

数据范围与提示