
无向图环检测(Cycle Detection (Undirected))
问题描述
给你一个含 N 个顶点、M 条边的无向图。第 i 条边连接顶点 ui 和 vi。
请判断图中是否存在环;若存在,输出任意一个环。
环定义为顶点序列 (v0,v1,…,vL−1) 与边序列 (e0,e1,…,eL−1),满足:
- L≥1
- i=j⇒vi=vj 且 ei=ej
- 对 0≤i<L−1,边 ei 连接 vi 与 vi+1
- 边 eL−1 连接 vL−1 与 v0
约束条件
- 1≤N≤5×105
- 0≤M≤5×105
- 0≤ui,vi<N
输入格式
N M
u0 v0
u1 v1
:
uM−1 vM−1
输出格式
- 若无环:
-1
- 否则:
L
v0 v1 ⋯ vL−1
e0 e1 ⋯ eL−1
其中 vi 为环上顶点(按顺序),ei 为对应边的编号(0-based)。
6 6
0 2
0 3
4 2
3 1
2 1
2 5
4
3 1 2 0
3 4 0 1
10 1
3 3
1
3
0
10 3
3 5
3 5
5 3
2
5 3
0 1
6 5
0 3
2 0
1 3
3 5
4 2
-1
6 0
-1