标签:
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
3 2
#include<stdio.h> #define INL 10000000 #define min(a,b) (a)>(b)?(b):(a) int x[10010][10010],n,m,s[10000],p[10000]; void Dijkstra() { int i,j,k; for(i=1;i<=n;i++) { s[i]=0; p[i]=INL; } p[1]=0;//这个地方刚开始没考虑到 while(1) { k=-1; for(i=1;i<=n;i++) if(s[i]==0&&(k==-1||p[i]<p[k])) k=i; if(k==-1) break; s[k]=1; for(int v=1;v<=n;v++) p[v]=min(p[v],p[k]+x[k][v]); } printf("%d\n",p[n]); } int main() { while(scanf("%d%d",&n,&m),n|m) { int i,a,b,c,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++) x[i][j]=INL; for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); x[a][b]=c; x[b][a]=c; } Dijkstra(); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/l15738519366/article/details/47726327