procedure DFS(G); begin 1 for 每个顶点u∈V[G] do begin 2 color[u]←White; 3 π[u]←NIL; end; 4 time←0; 5 for 每个顶点u∈V[G] do 6 if color[u]=White 7 then DFS_Visit(G,u); end; procedure DFS_Visit(G,u); begin 1 color[u]←Gray; Δ白色结点u已被发现 2 d[u]←time←time+1; 3 for 每个顶点v∈Adj[u] do Δ探寻边(u,v) 4 if color[v]=White then begin 5 π[v]←u; 6 DFS_Visit(G,v); end; 7 color[u]←Black; Δ完成后置u为黑色 8 f[u]←time←time+1; end; procedure BFS(G,S); begin 1. for 每个节点u∈V[G]-{s} do begin 2. color[u]←White; 3. d[u]←∞; 4. π[u]←NIL; end; 5. color[s]←Gray; 6. d[s]←0; 7. π[s]←NIL; 8. Q←{s} 9. while Q≠φ do begin 10. u←head[Q]; 11. for 每个节点v∈Adj[u] do 12. if color[v]=White then begin 13. color[v]←Gray; 14. d[v]←d[v]+1; 15. π[v]←u; 16. Enqueue(Q,v); end; 17. Dequeue(Q); 18. color[u]←Black; end; end;
begin
1 for 每个顶点u∈V[G] do
begin
2 color[u]←White;
3 π[u]←NIL;
end;
4 time←0;
5 for 每个顶点u∈V[G] do
6 if color[u]=White
7 then DFS_Visit(G,u);
end; procedure DFS_Visit(G,u);
begin
1 color[u]←Gray; Δ白色结点u已被发现
2 d[u]←time←time+1;
3 for 每个顶点v∈Adj[u] do Δ探寻边(u,v)
4 if color[v]=White
then begin
5 π[v]←u;
6 DFS_Visit(G,v);
end;
7 color[u]←Black; Δ完成后置u为黑色
8 f[u]←time←time+1;
end;
procedure BFS(G,S);
begin
1. for 每个节点u∈V[G]-{s} do
begin
2. color[u]←White;
3. d[u]←∞;
4. π[u]←NIL;
end;
5. color[s]←Gray;
6. d[s]←0;
7. π[s]←NIL;
8. Q←{s}
9. while Q≠φ do
begin
10. u←head[Q];
11. for 每个节点v∈Adj[u] do
12. if color[v]=White then
begin
13. color[v]←Gray;
14. d[v]←d[v]+1;
15. π[v]←u;
16. Enqueue(Q,v);
end;
17. Dequeue(Q);
18. color[u]←Black;
end;
end;