文档介绍:使用迪杰斯特拉算法寻找最短路径,输出最短路径及其长度代码:#include""#include<iostream>#defineM100usingnamespacestd;intarcs[100][100];ints[M];voiddijkstra(intarcs[][M],intv0,intpath[],intdist[]){ for(intv=0;v<M;v++){ dist[v]=M; } for(intv=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; elsepath[v]=-1; } dist[v0]=0; s[v0]=1; path[v0]=0; for(inti=1;i<M;i++){ intmin=M; intv=-1; for(intw=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(intj=0;j<M;j++){ if(arcs[v][j]!=0){ if((!s[j])&&(min+arcs[v][j]<dist[j])){ dist[j]=min+arcs[v][j]; path[j]=v; } } } }}intmain(){ inti,j,n,k,l; intpath[100]; intdist[100]; inta[100]; cout<<"输入图中总的顶点数和边数:"<<endl; cin>>n>>k; cout<<"顶点信息为:"; for(i=0;i<n;i++){ cout<<i<<''; } cout<<endl; cout<<"初始化完成,下面开始建立图:"<<endl; 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;