#aBC252G. [ABC252G] Pre-Order

[ABC252G] Pre-Order

AT_abc252_g [ABC252G] Pre-Order

题目描述

有一棵以顶点 11 为根的 NN 个顶点的有根树。顶点编号为 1,2,,N1,2,\ldots,N

从根开始进行深度优先搜索(DFS),并按先序遍历记录顶点编号,得到顺序 P1,P2,,PNP_1,P_2,\ldots,P_N
在深度优先搜索中,如果当前顶点有多个未被访问的子节点,则总是优先访问编号最小的那个。

先序遍历的定义如下:从根开始,重复以下步骤,依次枚举有根树上的顶点。

  1. 如果当前顶点 uu 尚未被记录,则记录它。
  2. 然后,如果 uu 的子节点中还有未被访问的,则移动到编号最小的那个未访问的子节点。
  3. 如果没有未访问的子节点,且 uu 是根,则遍历结束;否则返回到 uu 的父节点。
    按照上述顺序依次排列的顶点编号即为先序遍历序列。

请计算满足条件的有根树的方案数,并将结果对 998244353998244353 取模。
这里,若存在某个根以外的顶点,其父节点不同,则认为两棵“以顶点 11 为根的 NN 个顶点的有根树”是不同的。

输入格式

输入以以下格式从标准输入读入。

NN P1P_1 P2P_2 \ldots PNP_N

输出格式

输出满足条件的有根树的方案数,对 998244353998244353 取模。

输入输出样例 #1

输入 #1

4
1 2 4 3

输出 #1

3

输入输出样例 #2

输入 #2

8
1 2 3 5 6 7 8 4

输出 #2

202

说明/提示

限制条件

  • 2N5002 \leq N \leq 500
  • 1PiN1 \leq P_i \leq N
  • P1=1P_1 = 1
  • PiP_i 互不相同
  • 输入均为整数

样例解释 1

满足条件的有根树有如下 33 种情况。因此,输出 33

下图这样的树不满足条件。因为顶点 22 的子节点中,编号较小的顶点 33 会比顶点 44 先被访问,此时先序遍历为 1,2,3,41,2,3,4

由 ChatGPT 4.1 翻译