•对于u的子节点v,从v出发进行的DFS结束回到u时,使得 low[u] = min(low[u],low[v])。因为u可达v,所以v可达的最早的节点,也是u可达的。
•如果一个节点u,从其出发进行的DFS已经全部完成并回到u,而且此时其low值等于dfn值,则说明u可达的所有节点,都不能到达任何比u早的节点 ---- 那么该节点u就是一个强连通分量在DFS搜索树中的根。
•此时,显然栈中u上方的节点,都是不能到达比u早的节点的。将栈中节点弹出,一直弹到u(包括u),弹出的节点就构成了一个强连通分量.
有向图强连通分支的Tarjan算法
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
原文地址:https://www.cnblogs.com/sunbines/p/8886287.html
时间: 2024-10-13 07:23:20