#P1123. 【模板】欧拉路径(Hierholzer 算法)

    ID: 135 传统题 1000ms 256MiB 尝试: 0 已通过: 0难度: 普及+/提高− ← 上一题 下一题 → 随机一题 上传者: 标签 模板题 图论 深度优先搜索 DFS 欧拉路径
显示设置

【模板】欧拉路径(Hierholzer 算法)

题目描述

给定一张 nn 个点、mm 条边的有向图,图中可能有多条相同的边,但不会出现从一个点指向它自己的边。

一条欧拉路径是指:从某个点出发,顺着一系列边依次行走,使得每条边都恰好走过一次。被走过的边有一个先后顺序,一条路径可以用它经过的顶点序列完整记录下来(共 m+1m+1 个顶点)。

在所有合法的欧拉路径里,请输出顶点序列字典序最小的那一条。比较两个长度相同的整数序列时,从左往右逐位比较,第一次出现不同的位置上数字较小的那个序列更小。

如果图中不存在欧拉路径,输出 No。

输入格式

第一行两个整数 nn 和 mm。

接下来 mm 行,每行两个整数 uu 和 vv,表示一条从 uu 指向 vv 的边。

输出格式

如果存在欧拉路径,输出一行共 m+1m+1 个整数,相邻两个整数之间用一个空格隔开,表示字典序最小的那条欧拉路径经过的顶点序列;否则输出一行 No。

输入输出样例 #1

输入 #1

4 4
1 2
2 3
3 1
1 4

输出 #1

1 2 3 1 4

说明

数据规模:1≤n≤1051\le n\le 10^5,1≤m≤2×1051\le m\le 2\times 10^5,保证 1≤u,v≤n1\le u,v\le n 且 u≠vu\ne v。