AT_abc478_f [ABC478F] Min-First Search

题目描述

给定一棵由 $N$ 个顶点 $1,2,\ldots,N$ 构成的树 $T$。按照以下过程,可以得到一个 $(1,2,\ldots,N)$ 的排列 $P$,记为 $f(T)$。 * 初始时,令序列 $P$ 为空序列 $()$,集合 $S={1}$。 * 重复以下操作 $N$ 次: * 令 $x$ 为 $S$ 中的最小值。从 $S$ 中删除 $x$,并将 $x$ 添加到 $P$ 的末尾。 * 设顶点 $x$ 在树 $T$ 中相邻的顶点为 $v_1,v_2,\ldots,v_k$。对于每个 $i=1,2,\ldots,k$,如果 $v_i$ 尚未出现在 $P$ 中,则将 $v_i$ 加入 $S$。 给定一个 $(1,2,\ldots,N)$ 的排列 $$ Q=(Q_1,Q_2,\ldots,Q_N), $$ 求满足 $$ f(T)=Q $$ 的树 $T$ 的数量,并对 $998244353$ 取模。 特别地,两棵树被认为不同,当且仅当存在某一对顶点 $(u,v)$,使得这两棵树中一棵包含边 $(u,v)$,而另一棵不包含边 $(u,v)$。

输入格式

输入从标准输入中以以下格式给出: ```text N Q_1 Q_2 ... Q_N ```

输出格式

输出满足 $f(T)=Q$ 的树 $T$ 的数量,对 $998244353$ 取模。

说明/提示

### 样例解释 1 例如,对于如下图所示的一棵树 $T$,有 $f(T)=Q$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc478_f/3328e6721bb00235cb7a3be72d6416afd4420ea43e8f2bae852d71bc3e01329a.png) 求取 $f(T)$ 的过程如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc478_f/45e57a8d719ac5ba1e00de6f030a56a64d0ba55b18ee266e2d3f2bdce6741842.png) 包括这棵树在内,共有如下图所示的 $8$ 棵树满足条件。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc478_f/8c1849f68b4f6b4c1f10da155f3966987a71f61b9545216fba67c64e5a153efb.png) 因此答案为 `8`。 ### 样例解释 2 求满足条件的树的数量,并将答案对 $998244353$ 取模。 ### 数据范围 * $1\le N\le 2\times10^5$ * $1\le Q_i\le N\quad(1\le i\le N)$ * 当 $1\le i