
强连通分量(Strongly Connected Components)
问题描述
给定一个含 N 个顶点、M 条边的有向图(可能含重边,但题目未禁止;约束仅要求 ai=bi,未禁重边,故按一般处理)。
请将该图分解为强连通分量(SCC),并按拓扑序输出各 SCC。
约束条件
- 1≤N≤500000
- 1≤M≤500000
- 0≤ai,bi<N
- ai=bi
输入格式
N M
a0 b0
a1 b1
:
aM−1 bM−1
输出格式
K
l0 v0,0 v0,1 … v0,l0−1
l1 v1,0 v1,1 … v1,l1−1
:
lK−1 vK−1,0 … vK−1,lK−1−1
其中:
- K 为 SCC 的数量;
- 每行第一个数 l 是该 SCC 的顶点数;
- 后续 l 个数是该 SCC 中的顶点编号(顺序任意);
- 所有 SCC 按拓扑序排列:若存在从 SCC A 到 SCC B 的边,则 A 出现在 B 之前。
注:题目说明“若有多个解,输出任意一个”,故拓扑序不唯一时任选其一即可。
6 7
1 4
5 2
3 0
5 5
4 1
0 3
4 2
4
1 5
2 4 1
1 2
2 3 0