Tarjan强连通算法证明部分思考
- 如果不是这个连通块里的访问的第一个点,那么对于点d,它的后续可以访问的节点存在点编号比它低的,即low[d]<dfn[d]
- 访问过的点,用栈保存。对于点stack[x],编号id从x到y,点stack[x+1]…stack[y]都是点stack[x]可以到达的。
- 所以,当low[d]=dfn[d]
- 它就是这个连通块里第一个的点
- 那么它后续的点,low[d]!=dfn[d],都不是连通块里的访问的第一个点,即没有新的连通块
- 连通块里的点被访问完全了。如果连通块里的某个点没有被访问,那么肯定有一个连通块里的相邻点可以访问它