Dijkstra存储多条相同最短路径
使用list结构存储多个顶点(预备)
完整源码
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> larray[100];
larray[0].push_back(0);
larray[0].push_back(1);
larray[1].push_back(10);
larray[1].push_back(20);
larray[1].push_back(30);
for(int i = 0 ; i <= 1; i++)
{
list<int> mylist = larray[i];
for(list<int>::iterator ii = mylist.begin(); ii != mylist.end(); ii++)
cout << *ii << " ";
cout << endl;
}
}
测试运行
0 1
10 20 30
代码说明
- 这里把list数组的创建、添加、访问数据的方法先特别摘出来,是为了等下拼到原始的
Dijkstra算法
代码中保持头脑清晰;
- 原始的
Dijstra算法
计算最短路径问题,只存储一条路径的实现(点我),也可见引用资料[0];
Dijkstra算法计算、存储多条最短路径(正题)
完整源码
#include <iostream>
#include <vector>
#include <tuple>
#include <queue>
#include <stack>
#include <map>
#include <list>
using namespace std;
double distTo[100];
list<int> edgeTo[100];
int V, E;
const double INF_MAX = 9999999.9