【题目描述】
给定一个含有 N 个顶点和 M 条边的有向图。第 i 条边为 (ai,bi)。这个图不一定是简单图。
请将这个图分解为强连通分量(SCC),并按照拓扑序输出它们。
【输入】
文本
$N$ $M$
$a_0$ $b_0$
$a_1$ $b_1$
:
$a_{M - 1}$ $b_{M - 1}$
【输出】
第一行输出强连通分量的数量 K。
接下来的 K 行中,每行输出一个强连通分量的信息,格式如下。
l 是该强连通分量中顶点的数量,vi 是顶点编号。
文本
$l$ $v_0$ $v_1$ ... $v_{l-1}$
对于每条边 (ai,bi),包含 bi 的行不能早于包含 ai 的行。
如果存在多个解,输出其中任意一个即可。
【输入样例】
文本
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
【数据范围】
- 1≤N≤500,000
- 1≤M≤500,000
- 0≤ai,bi<N
【来源】
Library Checker(yosupo06) scc
本题为 special judge(输出任意合法解),暂不可本地评测。