tarjan算法伪代码tarjan(u){ DFN[u]=Low[u]=++Index//为节点u设定次序编号和Low初值 Stack.push(u)//将节点u压入栈中 for each(u,v) in E//枚举每一条边 if (visnotvisted)//如果节点v未被访问过 tarjan(v)//继续向下找 Low[u]=min(Low[u],Low[v]) else if (vinS)//如果节点v还在栈内 Low[u]=min(Low[u],DFN[v]) if (DFN[u]==Low[u])//如果节点u是强连通分量的根 repeat{ v=S.pop//将v退栈,为该强连通分量中一个顶点 printv until(u==v) }}
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。