连通性
无向图:连通(连通),连通图(任意两点都可以到达),如果不是连通图但是有一部分是连通图,那么它就是连通分量,连通分量就是连通块
有向图:如果一个图中两个点可以互相到达,就叫做强连通,如果说这个图中任意两个点都可以到达,那么这个图就叫做强连通图,同理强连通分量
强连通分量(SCC)
强连通分量缩点
缩点就是把分量中的点和边用一个点来表述
Tarjan算法求强连通分量
我们从一个点开始搜,标记搜索过的路径,如果说再进行搜索的时候后面的是前面已经出现过的,就说明成了一个环,这就是强连通分量。
算法解析:
本质:DFS
需要:记录两个数组:dfs[],low[]
dfn[x]:代表x点dfs到的时间,也就是时间戳,在同一个dfs树额子树中,dfn[x]越小,其越浅
low[x]:代表在dfs树中,此点以及其后代指出去的边,能返回到的最浅的点的时间戳