Biconnected Components
Biconnected Components
DFS(v)
StartTime := StartTime + 1;
d[v] := StartTime; {Init to 0}
back[v] := d[v];
for every w adjacent to x do
if d[w] < d[v] then
push (v,w) on EdgeStack
endif
if d[w] = 0 then
DFS(w);
if back[w] ³ d[v] then
Pop Edgestack until
(v,w) is popped
else
back[v] := min(back[v],
back(w));
endif
else
back[v] := min(back[v],d(w));
endif
endfor
end DFS
begin
for i:= 1 to n do d[i] := 0;
StartTime := 0;
DFS(1);
end