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:
|
if |V| != |E|-1
return false
for each vertex u in G.V - {s}
u.color = WHITE
u.d = infinity
u.PI = NIL
s.color = GRAY
s.d = 0
s.PI = NIL
ENQUEUE(Q,s)
while Q not empty
u = DEQUEUE(Q)
for each v in G.Adj[u]
if v.color == WHITE
v.color = GRAY
v.d = u.d + 1
v.PI = u
ENQUEUE(Q,v)
else if v.color == GRAY || BLACK
return false
u.color = BLACK
return true |