#abc252g. [abc252_g]Pre-Order
[abc252_g]Pre-Order
题目描述
有一棵根为第 个顶点的具有 个顶点的树。
我们从根开始进行深度优先搜索,并得到了一次前序遍历的结果: 。
在搜索过程中,当当前顶点有多个子节点时,我们选择索引最小的尚未访问的顶点。
什么是前序遍历?
我们从根开始并重复以下过程来列出树的顶点。
- 如果当前顶点 还未记录,则记录它。
- 然后,如果 有一个未访问的顶点,则进入该顶点。
- 否则,如果 是根节点,则终止;否则,进入 的父节点。 这里记录的顶点顺序即为树的前序遍历结果。
求与给定前序遍历结果一致的根为第 个顶点的树的数量,对 取模。
若两棵根为第 个顶点的树(具有 个顶点)存在某个非根顶点在两棵树中的父节点不同,则认为这两棵树是不同的树。
约束条件
- 所有 互不相同
- 输入中的所有值都是整数。
输入
从标准输入读入数据,输入格式如下:
输出
打印与给定前序遍历结果一致的根为第 个顶点的树的数量,对 取模。
示例输入 1
4
1 2 4 3
示例输出 1
3
与前序遍历结果一致的根为第 个顶点的树有以下三棵,因此答案为 。
请注意,下面的树不算在内。这是因为在顶点 的子节点中,我们先访问了顶点 而后访问了顶点 ,导致了前序遍历结果 。
示例输入 2
8
1 2 3 5 6 7 8 4
示例输出 2
202