摘要:
第一遍dfs是对原图进行,求出每个结点的后序遍历顺序,也叫时间戳,注意保存方式,应该是保存每个时间点的访问的结点,而不是保存每个结点的访问时间;第二遍dfs是对逆图进行,根据第一遍dfs的结果,首先在逆图上从时间戳最大的结点开始dfs,可以得到第一个强连通分量,将遍历过的结点标记,然后从下一个时间戳最大的且尚未标记的结点开始dfs,可以得到第二个强连通分量,以此类推,直到所有结点都确定其所在的强连通分量,此时算法结束。首先分析由此算法得到的第一个强连通分量的正确性,易知时间戳最大的是有向图的根结点:1、从根结点出发,可以到达所有结点;2、第二遍dfs是在逆图上进行的,所以第二遍dfs得到的是所 阅读全文