文档介绍:使用迪杰斯特拉算法寻找最短路径
使用迪杰斯特拉算法寻找最短路径,输出最短路径及其长度
代码:
#include ""
#include<iostream>
#define M 100
using namespace std;
int arcs[100][100];
int s[M];
void dijkstra(int arcs[][M],int v0,int path[],int dist[]){
for(int v=0;v<M;v++){
dist[v]=M;
}
for(int v=0;v<M;v++){
s[v]=0;
if(arcs[v0][v]!=0)dist[v]=arcs[v0][v];
if((dist[v]<M)&&(dist[v]!=0))path[v]=v0;
else path[v]=-1;
}
dist[v0]=0;
s[v0]=1;
path[v0]=0;
for(int i=1;i<M;i++){
int min=M;
int v=-1;
for(int w=0;w<M;w++){
if((!s[w])&&(dist[w]<min)&&(dist[w]!=0)){
v=w;
min=dist[w];
}
}
if(v==-1)break;
s[v]=1;
for(int j=0;j<M;j++){
for(l=0;l<k;l++){
cout<<"请输入边<i,j>的i、j和边上的权值w:";
cin>>i>>j;
cin>>arcs[i][j];
arcs[j][i]=arcs[i][j];
}
cout<<"建图结束"<<endl;
cout<<"用邻接矩阵实现图的输出为:" <<endl;
cout<<'\t';
for(i=0;i<n;i++){
cout<<i<<'\t';
}
cout<<endl;
f