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:
|
vertex parent[1...p], node adl[1...p], int where[1...p], int nr
BreadthFirstSearch()
vertex k
for (k=1 to p) do
where[k] = 0; parent[k] = 0
nr = 1
for (k = 1 to p) do
if (where[k] = 0)
then Visit(k); nr = nr +1
Visit(vertex k)
node no
ToQueue(k); where[k] = -1
repeat
k = FromQueue; where[k] = nr
no = adl[k]
while (no != null) do
if (where[no.v] = 0)
then ToQueue(no.v); where[no.v] = -1
parent[no.v] = k
no = no.next
until QueueEmpty
|