1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
|
time = 0
isBiconnected = true
for each v in V
v.color = weiß
v.PI = NIL
BICONNECTED(startNode)
return isBiconnected
--------------------------
BICONNECTED(u)
u.color = gray
u.d = time
u.l = u.d
time++
for each v in Adj[u]
if v.color == white
v.PI = u
MDFS-visit(v)
/* Kleineren Low-Wert des Kindes uebernehmen. */
u.l = min{u.l, v.l}
/* u ist Artikulationspunkt */
if v.l > u.d
isBiconnected = false
return
/* Rueckwaertskante */
if v.color == gray and u.PI != v
/* Merken, welche am weitesten zurueck reicht. */
u.l = min{u.l, v.d}
u.color = black |