解題策略
Articulation Points
A O(V+E) algorithm to find all Articulation Points (APs)
The idea is to use DFS (Depth First Search). In DFS, we follow vertices in tree form called DFS tree. In DFS tree, a vertex u is parent of another vertex v, if v is discovered by u (obviously v is an adjacent of u in graph). In DFS tree, a vertex u is articulation point if one of the following two conditions is true.
1) u is root of DFS tree and it has at least two children.
2) u is not root of DFS tree and it has a child v such that no vertex in subtree rooted with v has a back edge to one of the ancestors (in DFS tree) of u.
上一段話的中文翻譯
u是DFS樹的根節點,因為DFS樹,子樹之間不會相連,會相連就會屬於同一子樹,所以DFS樹的root,只要有兩個以上子樹就是articulation point
u是DFS樹的非根節點,u點的祖先與每個子孫有back edge,該點就不是articulation point,若有一子孫沒有back edge,該點就是articulation point
參考資料:演算法筆記http://www.csie.ntnu.edu.tw/~u91029/Connectivity.html
參考資料
(1)http://www.geeksforgeeks.org/articulation-points-or-cut-vertices-in-a-graph/
(2)http://puremonkey2010.blogspot.tw/2013/06/alg-info-using-dfs-to-find-articulation.html