#P9169. 无向图欧拉迹(Eulerian Trail (Undirected))

无向图欧拉迹(Eulerian Trail (Undirected))

无向图欧拉迹(Eulerian Trail (Undirected))

问题描述

本题有 T T 组测试数据。
对每组,给定一个含 N N 个顶点、M M 条边的无向图 G G (可能含重边,无自环),判断是否存在欧拉迹(Eulerian trail)——即一条经过每条边恰好一次的路径。

若存在,输出任意一条欧拉迹:

  • 顶点序列 v0,v1,,vM v_0, v_1, \dots, v_M (长度 M+1 M+1
  • 边序列 e0,e1,,eM1 e_0, e_1, \dots, e_{M-1} (长度 M M ),其中 ei e_i 是路径中第 i i 条边的输入索引,且 e0,,eM1 e_0,\dots,e_{M-1} {0,1,,M1} \{0,1,\dots,M-1\} 的一个排列,满足边 ei e_i 连接 vi v_i vi+1 v_{i+1}

若不存在,输出 No

约束条件

  • 1T105 1 \leq T \leq 10^5
  • 1N2×105 1 \leq N \leq 2 \times 10^5
  • 0M2×105 0 \leq M \leq 2 \times 10^5
  • 所有测试用例中 N2×105 \sum N \leq 2 \times 10^5 M2×105 \sum M \leq 2 \times 10^5

输入

TT
N MN\ M
u0 v0u_0\ v_0
u1 v1u_1\ v_1
:
uM1 vM1u_{M-1}\ v_{M-1}
(重复 T T 组)

输出

  • 若无欧拉迹:

    No

  • 否则:

    Yes
    v0 v1  vMv_0\ v_1\ \cdots\ v_M
    e0 e1  eM1e_0\ e_1\ \cdots\ e_{M-1}

3
4 7
0 1
0 2
0 2
0 3
1 3
2 3
3 3
4 6
0 1
0 2
0 3
1 2
1 3
2 3
6 10
0 3
1 2
4 0
5 1
4 4
2 3
1 3
3 2
1 4
5 1
Yes
2 0 1 3 0 2 3 3
2 0 4 3 1 5 6
No
Yes
1 2 3 0 4 4 1 5 1 3 2
1 7 0 2 4 8 9 3 6 5
4
10 0
10 1
0 1
10 1
4 4
10 2
4 4
5 5
Yes
0

Yes
0 1
0
Yes
4 4
0
No