#P15658. [ICPC 2025 Jakarta R] Count DFS Graph

[ICPC 2025 Jakarta R] Count DFS Graph

说明

你正在研究一种名为 深度优先搜索(DFS)的图遍历算法。从一个空列表 A\texttt{A} 开始,下面的伪代码将用 DFS 算法的访问顺序填充列表 A\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)

运行上述伪代码中的 DFS(1)\texttt{DFS(1)} 后,你现在得到了一个包含 11NN 整数排列的列表 AA。你现在想知道,有多少个不同的、具有 NN 个节点的简单无向图,能够产生你手中的列表 AA。请计算这个数量,并对 998244353998\,244\,353 取模。

当图中没有自环,且每对节点之间最多只有一条边时,该图是简单的。如果在一个图中存在连接某对节点的边,而在另一个图中不存在,则认为这两个图是不同的。

输入格式

第一行包含一个整数 NN2N3002 \le N \le 300)。

第二行包含前 NN 个正整数的排列,代表列表 AA

保证 AA 的第一个元素是 11

输出格式

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

4
1 3 4 2
3
10
1 2 3 4 5 6 7 8 9 10
515546413

提示

样例 1 解释: 下图展示了所有能产生给定 DFS 顺序的图。

:::align{center} :::

翻译由 DeepSeek V3.2 完成