题目 30106

欧拉回路计数

查看题解 ↗GitHub ↗如何评测
题号
30106
时间限制
10000 ms
内存限制
1024 MB
标签
图论
来源
Library Checker (yosupo06) - counting_eulerian_circuits

【题目描述】

给定一个有向图 GG,它由 NN 个顶点和 MM 条边组成。第 ii 条边从 uiu_i 指向 viv_i。

GG 的欧拉回路是由顶点序列 (v0,…,vM−1)(v_0,\ldots,v_{M-1}) 与边序列 (e0,…,eM−1)(e_0,\ldots,e_{M-1}) 组成的二元组,满足以下条件:

  • (e0,…,eM−1)(e_0,\ldots,e_{M-1}) 是 (0,…,M−1)(0, \ldots, M-1) 的一个排列。
  • 对于 0≤i<M−10\leq i < M-1,边 eie_i 从 viv_i 指向 vi+1v_{i+1}。边 eM−1e_{M-1} 从 vM−1v_{M-1} 指向 v0v_0。

注意,欧拉回路经过任意循环移位后仍然是欧拉回路。

求 GG 的欧拉回路数量,其中可以通过循环移位互相得到的欧拉回路视为相同(换言之,求满足 e0=0e_0 = 0 的欧拉回路数量),并将结果对 998244353998244353 取模。

【输入】

文本
$N$ $M$
$u_0$ $v_0$
$\vdots$
$u_{M-1}$ $v_{M-1}$

【输出】

输出答案对 998244353998244353 取模的结果。

【输入样例】

文本
3 6
0 1
0 1
1 2
1 2
2 0
2 0

【输出样例】

文本
4

【输入样例2】

文本
4 10
0 1
0 2
1 0
1 3
1 3
2 1
2 3
3 0
3 1
3 2

【输出样例2】

文本
36

【输入样例3】

文本
10 4
0 0
0 0
0 0
0 0

【输出样例3】

文本
6

【输入样例4】

文本
3 2
0 1
1 2

【输出样例4】

文本
0

【数据范围】

  • 1≤N≤5001 \leq N \leq 500
  • 1≤M≤2000001 \leq M \leq 200000
  • 0≤ui,vi<N0 \leq u_i, v_i \lt N

【来源】

Library Checker(yosupo06) counting_eulerian_circuits

数据下载

题目 30106 的公开数据

正在读取文件列表…

常用命令

题目 30106 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。