#P9168. 有向图欧拉迹(Eulerian Trail (Directed))
有向图欧拉迹(Eulerian Trail (Directed))

有向图欧拉迹(Eulerian Trail (Directed))
问题描述
给定 组测试数据。对每组,输入一个含 个顶点、 条边的有向图(边按输入顺序编号为 到 )。
判断该图是否存在欧拉迹(Eulerian trail)——即一条经过每条边恰好一次的路径(不要求回到起点)。
若存在,输出任意一条欧拉迹,格式为:
- 第一行:
Yes - 第二行:顶点序列 (长度 )
- 第三行:边序列 (长度 ),其中 是路径中第 条边的编号,且满足:
- 是 的一个排列;
- 对每个 ,边 从 指向 。
若不存在,输出 No。
存在性条件(有向图)
图存在欧拉迹当且仅当满足以下之一:
- 欧拉回路:所有顶点入度 = 出度,且图弱连通(忽略方向后连通)且至少有一条边;
- 欧拉路径(非回路):恰有一个顶点满足 (起点),恰有一个顶点满足 (终点),其余顶点入度 = 出度,且图弱连通且至少有一条边。
注意:孤立顶点(入出度均为 0)允许存在,但整个图必须在边诱导子图上弱连通(即所有有边的顶点构成一个弱连通分量)。
约束条件
- 所有测试用例中 ,
输入格式
:
(重复 组)
输出格式
- 若无欧拉迹:
No - 否则:
Yes
3
4 7
0 1
2 0
0 2
3 0
1 3
2 3
3 3
4 6
0 1
2 0
0 3
1 2
3 1
2 3
6 10
0 3
1 2
4 0
5 1
4 4
2 3
3 1
3 2
1 4
1 5
Yes
2 0 1 3 0 2 3 3
1 0 4 3 2 5 6
No
Yes
1 2 3 1 5 1 4 4 0 3 2
1 5 6 9 3 8 4 2 0 7
6
10 0
10 1
0 1
10 1
4 4
10 2
4 4
5 5
10 2
3 6
6 3
10 2
3 6
3 6
Yes
0
Yes
0 1
0
Yes
4 4
0
No
Yes
3 6 3
0 1
No