/* Dijkstra(不存在负环回路的情况下) */#include#include #include #define Inf 0x7fffffff#define MaxV 10000using namespace std;int N,M;int map[MaxV][MaxV];int dist[MaxV]; //记录当前节点最短路径int path[MaxV]; //记录最短路径前一节点bool p[MaxV];void dijkstra(int s){ int i,j,k; int min; for(i=0;i<=N;i++) //初始化非源点信息 { p[i]=false,dist[i]=map[s][i],path[i]=s; } dist[s]=0,path[s]=s,p[s]=true; //源点信息 for(i=1;i<=N;i++) { min=Inf; k=0; for(j=1;j<=N;j++) { if(!p[j]&&dist[j] <=N;j++) { if(!p[j]&&map[k][j]!=Inf&&dist[j]>dist[k]+map[k][j]) { dist[j]=dist[k]+map[k][j]; path[j]=k; } } }}void init(){ int from,to,w; scanf("%d%d",&N,&M); for(int i=0;i<=N;i++) for(int j=0;j<=N;j++) { if(i==j) map[i][j]=0; else map[i][j]=Inf; } for(int i=0;i <=N;i++) printf("dist[%d] = %d\n",i,dist[i]); return 0;}