具体代码实现时可以维护一个Low[V] Low[V]记录的是V所属于的强连通分量的根节点的dfs序 由dfs序可知强连通分量的根节点的dfs序是整个强连通分量中最小的 那么搜索完后只需要判断Low[V]是否等于V的dfs序即可知V是否为强连通分量的根节点 而显然Low[V]=min(Low[to],Low[V]),to∈V的子节点 而当V连接的是已经在栈中的点V\'时则Low[V]=min(Low[V],V\'的dfs序)
算法时间复杂度:
显然Tarjan算法中每一点都只会进栈一次出栈一次 而每一个节点都会遍历它的所有边 故Tarjan算法求有向图中的强连通分量的时间复杂度为T(n+m)
代码以后补齐: