定义
在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。
Tarjan算法可以用于求一张有向图的最大强联通分量
基本参数
对于一张有向图
上图来自byvoid大牛
进行dfs搜索后会出现一棵dfs搜索树
1.time表示时间戳,表示这个节点是第几个被访问的
2.dfn表示u节点的时间戳
low数组表示以u为根节点的子树中的节点能访问到的时间戳最小的节点的时间戳
开始时low[u]=dfn[u]
搜索完u所有相邻的节点后
low[u]=min(low[u],low[v])(u能访问v且v不在其他强连通分量中)
例如
low[1]=1
low[2]=1
low[4]=1
算法流程
tarjan(u)
{
DFN[u]=Low[u]=