<pre name="code" class="cpp">
//BFS
void BFS(Vertex S)
{
visited[S]=true;
Enqueue(S,Q);
while(!Empty(Q))
{
V=Dequeue(Q);
for(V的每个邻接点)
if(!visited[W]){
visited[W]=true;
Enqueue(W,Q);
}
}
}
/*
*求无权图的单源最短路径
*dist[w]=S到W的距离
*dist[S]=0
*path[W]=S到W的路上经过的某顶点
*/
void Unweighted(Vertex S)
{
Enqueue(S,Q);
while(!isEmpty(Q)){
V=DeQueue(Q);
for(V的每个邻接点W)
if(dist[W]==-1){
dist[W]=dist[V]+1;
path[W]=V;
Enqueue(W,Q);
}
}
}