首先说明,这里的最短路是指经过的城市最少
代码如下:
/*
广度优先遍历的应用:在城市地图中求一条
一个城市到另一个城市的经过最少城市的路径
*/
#include<iostream>
using namespace std;
#define N 10
int cityMap[N][N] = {
{0}, {0, 0, 1, 1, 1, 0, 1, 0, 0}
, {0, 1, 0, 0, 0, 0, 1, 0, 0}
, {0, 1, 0, 0, 0, 0, 0, 0, 1}
, {0, 1, 0, 0, 0, 0, 0, 1, 0}
, {0, 0, 0, 0, 0, 0, 0, 0, 0}
, {0, 1, 1, 0, 0, 0, 0, 0, 1}
, {0, 0, 0, 0, 1, 0, 0, 0, 1}
, {0, 0, 0, 1, 0, 0, 1, 1, 0}
};
char cityName[N] = {'#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};// 顶点
int visited[N] = {0};// 标记图中元素的访问状态
void getPath(int k);
void outputShortestPath(int des);
int pre[N];
int main() {
cout << "B到G的最短路径为:" << endl;
getPath(2);
return 0;
}
void getPath(int k) {
int queue[N];
pre[k] = -1;
int front = 0, rear = 0;
visited[k] = 1;
// cout << cityName[k