迪杰斯特拉-最短路径算法
2017-05-27 18:45
330 查看
#include <iostream> #include <string> #include <stack> #include <vector> #include <iomanip> using namespace std; //变量 int L[10]={0};//L(i)//记录路径 int exsist[10]={0};//判断点是否存在的集合 int pre[10]={0};//记录前导点 //vector<int> path;//记录最短路径结点//后来发现思路不对//每次记录min点会出现不连续的路径 int jiedian;//结点个数//从V1开始 //变量 //判断点是否存在 bool ifexsist(int exsist[10],int judgepoint){ if(exsist[judgepoint]==1) return 1; else return 0; } //找出min(L(i)) int minLi(int L[10],int exsist[10]){ int temp; for(int i = 1;i<=jiedian;i++){ if(exsist[i]==1) { temp = i; break; }//min赋初值 } int min=temp; for(int i = 1; i <=jiedian; i++){ if((exsist[i]==1) && (L[i]<L[min])){ min = i; } } return min; } int main() { for(int i = 0; i < 10; i++) L[i]=999; for(int i = 0; i < 10; i++) exsist[i]=1; cout<<"请输出图中结点个数(<10):"; cin>>jiedian; int tu[10][10]={0}; cout<<"请输入边和权值,输入0,0,0时结束"<<endl; int b1=1,b2,q; while(b1+b2+q){ cin>>b1>>b2>>q; tu[b1][b2]=q; //tu[b2][b1]=q; } cout<<"图的邻接矩阵如下:"<<endl; for(int i = 1;i <= jiedian;i++){ cout<<"V"<<i<<" "; for(int j=1; j<= jiedian; j++){ cout<<setw(4)<<tu[i][j]<<" "; } cout<<endl; } int begin,end;//起点和终点 cout<<"输入起点终点"<<endl; cin>>begin>>end; L[begin] = 0; while(1){ int min = minLi(L, exsist); //出度 if(min == end) break; for(int m=1; m<=jiedian; m++){ //if(m==min) continue; if(tu[min][m]!=0){ //先判断临点存在 if(ifexsist(exsist, m)){ int temp = L[min] + tu[min][m]; //替换L if(temp < L[m]) { pre[m]=min; L[m]=temp; } } } } //所有临点判断完 exsist[min]=0; //path.push_back(min); } int t = end; cout<<"最短路径为:"<<endl; while(1){ cout<<"V"<<t; if(t ==begin || t==0) { break; } else cout<<"<-"; t = pre[t]; } cout<<endl<<"最短路径长度为:"<<endl; cout<<L[end]<<endl; return 0; } /* 1 6 100 1 5 30 1 3 10 2 3 5 3 4 50 4 6 10 5 4 20 5 6 60 0 0 0 */
相关文章推荐
- 最短路径顶点算法:最短路径之迪杰斯特拉(Dijkstra)算法Strut2教程-java教程
- 迪杰斯特拉(Dijkstra)算法求图中最短路径
- Dijkstra(迪杰斯特拉)算法求解最短路径
- 迪杰斯特拉(Dijkstra)算法求图的最短路径
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)及其他 + leetcode习题实践
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
- 最短路径之迪杰斯特拉(Dijkstra)算法
- 迪杰斯特拉(最短路径)算法
- 最短路径算法——Dijsktra(迪杰斯特拉)算法。C++实现。
- 最短路径算法-迪杰斯特拉Dijkstra算法
- Dijkstra(迪杰斯特拉)最短路径算法分析
- 最短路径算法(上)——迪杰斯特拉(Dijikstra)算法
- 数据结构之(图最短路径之)Dijkstra(迪杰斯特拉)算法
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现代码(C/C++)
- 43. 数据结构笔记之四十三最短路径之迪杰斯特拉(Dijkstra )算法
- 迪杰斯特拉(Dijkstra)算法求解单源最短路径及其相应长度(java实现)
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
- 数据结构之 迪杰斯特拉最短路径算法
- 最短路径之迪杰斯特拉(Dijkstra)算法
- 最短路径算法—Dijkstra(迪杰斯特拉)算法