#P7771. 【模板】欧拉路径(Eulerian Path)

0

【模板】欧拉路径(Eulerian Path)

【模板】欧拉路径(Eulerian Path)

题目描述

求有向图字典序最小的欧拉路径。

输入格式

第一行两个整数 n,mn,m 表示有向图的点数和边数。

接下来 mm 行每行两个整数 u,vu,v 表示存在一条 u→vu\to v 的有向边。

输出格式

如果不存在欧拉路径,输出一行 No。

否则输出一行 m+1m+1 个数字,表示字典序最小的欧拉路径。

样例输入 #1

4 6
1 3
2 1
4 2
3 3
1 2
3 4

样例输出 #1

1 2 1 3 3 4 2

样例输入 #2

5 5
1 2
3 5
4 3
3 4
2 3

样例输出 #2

1 2 3 4 3 5

样例输入 #3

4 3
1 2
1 3
1 4

样例输出 #3

No

数据范围

对于 50%50\% 的数据,n,m≤103n,m\leq 10^3。

对于 100%100\% 的数据,1≤u,v≤n≤1051\leq u,v\leq n\leq 10^5,m≤2×105m\leq 2\times 10^5。

保证将有向边视为无向边后图连通。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1700。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~3 样例
1 20 4~9 小规模 n,m≤1000 / 特殊: 含多重自环与欧拉回路 / 特殊: 度数不合法输出No
2 10~15 中等规模 n≤20000,m≤50000 / Hack: 贪心不回溯死胡同图(检验Hierholzer退栈顺序)
3 30 16~21 满规模 n=100000,m=200000 迭代式Hierholzer防爆栈压力测试
4 20 22~25 满规模 n=100000,m=200000 欧拉路径/回路/无解混合回归

出处:原题链接