强连通分量类
基于Graph类
Tarjan算法
基于DFS序和low数组,求得每个强连通分量
Kosaraju算法
先对原图进行一遍DFS,按DFS序的顺序在反图中DFS,每次DFS到的点属于同一个强连通分量。
时间复杂度$O(m)$,如果边数较多,可以用bitset优化到$O(\frac{n^2}{32})$
缩点
将同一个强连通分量的点缩在一个点中,不在同一个强连通分量的点连边,得到一个拓扑图。
基于Graph类
Tarjan算法
基于DFS序和low数组,求得每个强连通分量
Kosaraju算法
先对原图进行一遍DFS,按DFS序的顺序在反图中DFS,每次DFS到的点属于同一个强连通分量。
时间复杂度$O(m)$,如果边数较多,可以用bitset优化到$O(\frac{n^2}{32})$
缩点
将同一个强连通分量的点缩在一个点中,不在同一个强连通分量的点连边,得到一个拓扑图。