一个图G的双连通分支是把边分成一些集合的划分,使得每个边集所形成的图时双连通的。修改下面的算法,使能找出双连通分支而不是割点。
void FindArt(Vertex V) { Vertex W; Visited[V} = True; Low[V] = Num[V] = Counter++; /*Rule 1*/ for each W adjacent to V { if( !Visited[W]) /*Forward edge*/ { Parent[W] = V; FindArt(W); if(Low[W] >= Num[V]) printf("%v is an articulation point\n",v); Low[V] = Min(Low[V],Low[W]); /*Rule 3*/ } else if(Parent[V] != W) /*Back edge*/ Low[V] = Min(Low[V], Num[W]); /*Rule 2*/ } }