一、BFS求单源最短路径
BFS求单源最短路径只适用于无权图,或所有边的权值都相等的图。
//求顶点U到其他顶点的最短路径
void BFS_MIN_Distance(Graph G,int u)
{
queue<int> Q
//d[i]表示从顶点u到顶点i的最短路径
for(int i=0;i<G.vexnum;i++)
{
d[i]=0x3f3f3f3f; //初始化路径长度
path[i]=-1; //表示最短路径从哪个顶点过来
}
d[u]=0;
visited[u]=true;
Q.push(u);
while(!Q.empty())
{
u=Q.front();
Q.pop();
for(int w=FirstNeighbor(G,u);w>=0;w=NextNeighbor(G,u,w))
{
if(!visited[w])
{
d[w]=d[u]+1; //路径长度+1
path[w]=u; //最短路径应从u到w
visited[w]=true;
Q.push(w);
}
}
}
}