P15658 [ICPC 2025 Jakarta R] Count DFS Graph

题目描述

你正在研究一种名为 **深度优先搜索**(DFS)的图遍历算法。从一个空列表 $\texttt{A}$ 开始,下面的伪代码将用 DFS 算法的访问顺序填充列表 $\texttt{A}$。 ``` DFS(v): append v to A for each u neighbour of v in ascending node number: if u is not in A: DFS(u) ``` 运行上述伪代码中的 $\texttt{DFS(1)}$ 后,你现在得到了一个包含 $1$ 到 $N$ 整数排列的列表 $A$。你现在想知道,有多少个不同的、具有 $N$ 个节点的简单无向图,能够产生你手中的列表 $A$。请计算这个数量,并对 $998\,244\,353$ 取模。 当图中没有自环,且每对节点之间最多只有一条边时,该图是简单的。如果在一个图中存在连接某对节点的边,而在另一个图中不存在,则认为这两个图是不同的。

输入格式

第一行包含一个整数 $N$($2 \le N \le 300$)。 第二行包含前 $N$ 个正整数的排列,代表列表 $A$。 保证 $A$ 的第一个元素是 $1$。

输出格式

输出一个整数,表示能够产生列表 $A$ 的不同图的数量,对 $998\,244\,353$ 取模。

说明/提示

**样例 1 解释:** 下图展示了所有能产生给定 DFS 顺序的图。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/nqpv5sqd.png) ::: 翻译由 DeepSeek V3.2 完成