标签:
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
3 2
代码:
#include<stdio.h> #include<string.h> #define INF 0x3f3f3f int map[110][110],vis[110],low[110]; int n,m; int init() //初始化; { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) map[i][j]=0; else map[i][j]=INF; } } } int dijkstra() { int i,j,min,next; memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) { low[i]=map[1][i]; } vis[1]=1; for(i=2;i<=n;i++) { min=INF; for(j=1;j<=n;j++) { if(!vis[j]&&min>low[j]) { next=j; min=low[j]; } } vis[next]=j; for(j=1;j<=n;j++) //更新low ; { if(!vis[j]&&low[j]>map[next][j]+low[next]) { low[j]=map[next][j]+low[next]; } } } printf("%d\n",low[n]); } int main() { int i,j,a,b,c; while(scanf("%d%d",&n,&m)!=EOF&&n|m) { init(); for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); if(map[a][b]>c) //去重边; { map[a][b]=map[b][a]=c; } } dijkstra(); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/longge33445/article/details/47726195