CF1740H MEX Tree Manipulation

题目描述

给定一棵有根树,定义树中顶点 $u$ 的值为其所有子节点的值的 MEX $^\dagger$。注意,这里只考虑子节点,而不是所有后代。特别地,叶子的值为 $0$。 Pak Chanek 有一棵初始只包含编号为 $1$ 的根节点的有根树。Pak Chanek 将进行 $q$ 次操作。在第 $i$ 次操作中,Pak Chanek 会得到一个整数 $x_i$。Pak Chanek 需要将编号为 $i+1$ 的新顶点作为顶点 $x_i$ 的子节点加入树中。每次加入新顶点后,Pak Chanek 需要重新计算所有顶点的值,并输出当前树中所有顶点的值之和。 $^\dagger$ MEX(minimum excluded)指的是一个数组中未出现的最小非负整数。例如,$[0,1,1,2,6,7]$ 的 MEX 是 $3$,$[6,9]$ 的 MEX 是 $0$。

输入格式

第一行包含一个整数 $q$($1 \leq q \leq 3 \cdot 10^5$),表示操作次数。 接下来的 $q$ 行,每行包含一个整数 $x_i$($1 \leq x_i \leq i$),表示第 $i$ 次操作的描述。

输出格式

对于每次操作,输出一行一个整数,表示加入新顶点后当前树中所有顶点的值之和。

说明/提示

在第一个样例中,第 $6$ 次操作后树的结构如下图所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1740H/3ec9701f0fba73cbe3f2ff2eaf9014df304908e5.png) - 顶点 $7$ 是叶子,所以它的值为 $0$。 - 顶点 $6$ 是叶子,所以它的值为 $0$。 - 顶点 $5$ 只有一个值为 $0$ 的子节点,所以它的值为 $1$。 - 顶点 $4$ 是叶子,所以它的值为 $0$。 - 顶点 $3$ 只有一个值为 $0$ 的子节点,所以它的值为 $1$。 - 顶点 $2$ 有两个子节点,值分别为 $0$ 和 $1$,所以它的值为 $2$。 - 顶点 $1$ 有两个子节点,值分别为 $1$ 和 $2$,所以它的值为 $0$。 所有顶点的值之和为 $0+0+1+0+1+2+0=4$。 由 ChatGPT 4.1 翻译