hdu2544最短路 Dijkstra 算法求最短路

题目见之前的文章

这是Dijkstra算法的解法

#include<stdio.h> #define maxsum 0x7fffffff int map[101][101],dist[101],s[101]; void Dijkstra(int n,int x) { int mindis,u; for(int i=1;i<=n;i++) { dist[i]=map[x][i]; s[i]=0; } s[x]=1; for(int i=1;i<=n;i++) { mindis=maxsum; u=-1; for(int j=1;j<=n;j++) if(!s[j]&&dist[j]<mindis) { u=j; mindis=dist[j]; } s[u]=1; for(int j=1;j<=n;j++) if(s[j]==0) if(dist[u]+map[u][j]<dist[j]&&map[u][j]<maxsum) dist[j]=dist[u]+map[u][j]; } } int main() { int n,m,a,b,c; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) map[i][j]=map[j][i]=maxsum; for(int i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); map[a][b]=map[b][a]=c; } Dijkstra(n,1); printf("%d/n",dist[n]); } return 0; }

你可能感兴趣的:(hdu2544最短路 Dijkstra 算法求最短路)