//BFS算法求解单源最短路径问题(非带权图)
void BFS_MIN_DISTANCE(Graph G, int u) {
//d[i]表示从u到i结点的最短路径
for (i = 0; i < G.vexnum; ++i) {
d[i] = ∞;//初始化路径长度
path[i] = -1;//最短路径从哪个顶点过来
}
d[u] = 0;
visited[u] = true;
EnQueue(Q, u);
while (!isEmpty(Q)) {
DeQueue(Q, u);//队头元素u出队
for (w = FirstNeighbor(G, u); w >= 0; w = NextNeighbor(G, u, w)) {
if (!visited[w]) {//w为u的尚未访问的邻接结点
d[w] = d[u] + 1;//路径长度加1
path[w] = u;//最短路径应从u到w
visited[w] = true;//设已访问标记
EnQueue(Q, w);//顶点w入队
}
}
}
}
BFS算法求解单源最短路径问题(非带权图)
最新推荐文章于 2024-09-16 12:36:03 发布