用Dijkstra算法求解v0到其他各点的距离
#include <iostream> #include <cstdio> using namespace std; int dis[10][10],minDist[10]; bool visit[10]; const int Dis_MAX=1000000000; int main() { int n,m; for(int i=0;i<6;i++) { for(int j=0;j<6;j++) if(i!=j) dis[i][j]=Dis_MAX; else dis[i][j]=0; } dis[0][2]=10; dis[0][5]=100; dis[0][4]=30; dis[1][2]=5; dis[2][3]=50; dis[3][5]=10; dis[4][3]=20; dis[4][5]=60; int start=0,end; cin>>end; for(int i=0;i<=5;i++) minDist[i]=_____(1)______; //minDist[i]表示从起点到i的最短路径 visit[start]=true;//已确定最短路的结点集合P minDist[start]=0; for(int i=1;i<=5;i++) { //做5遍就能把未确定最短路的结点集合Q遍历空 int minn=Dis_MAX; int k; for(int j=1;j<=5;j++) {//寻找Q中最近的结点 if(______(2)______) { minn=minDist[j]; k=j; } } _______(3)_______;//加入P集合 for(int j=1;j<=5;j++) { //对k的所有边进行松弛 minDist[j]=________(4)_______; } } if(______(5)_______) printf("%d",minDist[end]); else printf("-1"); return 0; }