AT_pakencamp_2024_day2_e Excluded Children
题目描述
给定一棵以顶点 $1$ 为根的有 $N$ 个顶点的有根树,对于每个顶点 $i$,它的父节点是 $P_i$。此外,每个顶点都可以填写一个非负整数。
你首先要给这棵树的所有叶子结点(即没有子结点的节点)填写 $0$ 或 $1$。然后,对于所有非叶子结点,对于每个顶点 $v$,你需要填写其所有子结点上所写的数的集合的 $\mathrm{mex}$。
严格来说,设在顶点 $v$ 上填写的非负整数为 $A_v$,需满足以下条件:
- 若顶点 $v$ 是叶子,则 $A_v = 0$ 或 $A_v = 1$。
- 若顶点 $v$ 不是叶子,记其子结点为 $C_1, C_2, \ldots, C_M$,则 $A_v = \mathrm{mex}(\{A_{C_1}, A_{C_2}, ..., A_{C_M}\})$。
这里,对任意非负整数集合 $S$,$\mathrm{mex}(S)$ 表示不属于 $S$ 的最小非负整数。
若叶子的个数为 $L$,则顶点上填写非负整数的方法总共有 $2^L$ 种。现在请你分别对于 $k = 0, 1, 2, \ldots, N$,求出在这 $2^L$ 种填写方法中,最终使顶点 $1$ 上填写的数为 $k$ 的方案数,并将结果对 $998244353$ 取模输出。
输入格式
输入为标准输入,格式如下:
> $N$ $P_2$ $P_3$ \ldots $P_N$
输出格式
输出共 $N+1$ 行。第 $i$ 行($0 \leq i \leq N$)输出最终顶点 $1$ 上填写 $i$ 的方案数对 $998244353$ 取模的结果。
说明/提示
### 小子任务
1.(4 分)叶子结点个数不超过 $5$
2.(8 分)$P_i = 1$($2 \leq i \leq N$)
3.(8 分)$P_i = \lfloor \frac{i}{2} \rfloor$($2 \leq i \leq N$)
4.(15 分)$N \leq 100$
5.(25 分)$N \leq 5000$
6.(40 分)无额外限制
### 样例解释 1
在该样例输入中,叶子结点为顶点 $3, 4, 5$。比如,依次给它们分别填写 $0, 1, 0$:
- 顶点 $2$ 的子结点是顶点 $4, 5$,分别填写了 $1, 0$,所以顶点 $2$ 上填写的数为 $\mathrm{mex}(\{0,1\}) = 2$。
- 顶点 $1$ 的子结点是顶点 $2, 3$,分别填写了 $2, 0$,所以顶点 $1$ 上填写的数为 $\mathrm{mex}(\{0,2\}) = 1$。
因此,这种情况下顶点 $1$ 的数字为 $1$。
本样例满足小子任务 $1,3,4,5,6$。
### 样例解释 2
本样例满足小子任务 $1,4,5,6$。
### 数据范围
- $1 \leq N \leq 2 \times 10^{5}$
- $1 \leq P_i < i$($2 \leq i \leq N$)
- 所有输入均为整数。
由 ChatGPT 5 翻译