求出从第一个城市到第五个城市的最短路径:
具体代码请看上一篇文章:Qt使用深度优先搜索和广度优先搜索遍历图
int gShortestPath = 99999;//最短路径
int gTarget = 5;//目标节点
int _currentLen = 0;//当前长度
void Graph::shortestPathByDFS(GraphVertex vertex, int currentLen) {
if (vertex.getID() == gTarget) {//找到目标
gShortestPath = gShortestPath < currentLen ? gShortestPath : currentLen;
return;
}
for (int i = 0; i < VERTEX_NUM; i++) {
if (_vertex[vertex.getID()][i] > 0 && _book[i] == 0) {//当前有路径并且还没有走过
_book[i] = 1;
_graphVertex[i].setDrawBK(true);
_update->updateMap();
shortestPathByDFS(_graphVertex[i], currentLen + _vertex[vertex.getID()][i]);
_book[i] = 0;
_graphVertex[i].setDrawBK(false);
}
}
}