#define MaxVertexNum 100
bool visited[MaxVertexNum];
void BFS(Graph G,int v){
visit(v);
visited[v] = true;
Enqueue(Q,v);
while(!IsEmpty(Q))
{
DeQueue(Q,v);
for(w = FirstNeighbor(G,v);w>=0;w = NextNeighbor(G,v,w))
{
if(!visited[w])
{
visit(w);
visited[w] = true;
Enqueue(Q,w);
}
}
}
}
void BFSTraverse(Graph G){
for(int i = 0;i<G.vexnum;i++)
visited[i] = false;
InitQueue(Q);
for(int i = 0;i<G.vexnum;i++)
if(!visited[i])
BFS(G,i);
}
求解单元最短路线问题
void BFS_Min_Distance(Graph G,int u){
for(int i = 0;i<G.vexnum;i++)
d[i] = ∞;
visited[u] = true;
d[u] = 0;
EnQueue(Q,u);
while(!IsEmpty(Q))
{
DeQueue(Q,u);
for(w = FirstNeighbor(G,v);w>=0;w = NextNeighbor(G,v,w))
{
if(!visited[w])
{
visited[w] = true;
d[w] = d[u] + 1;
EnQueue(Q,w);
}
}
}
}