2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
3 2
<span style="font-size:24px;">#include<iostream> #include<cstring> using namespace std; #define INF 0x3f3f3f; int map[110][110],d[110],v[110]; void Dijkstra(int n) { int i,p,j,min; for (i=1;i<=n;i++) { d[i]=map[1][i]; v[i]=0; } v[1]=1; for (i=1;i<=n;i++) { min=INF; for (j=1;j<=n;j++) { if(!v[j] && d[j]<min) { p=j; min=d[j]; } } v[p]=1; for (j=1;j<=n;j++) { if(!v[j] && d[p]+map[p][j]<d[j]) { d[j]=d[p]+map[p][j]; } } } } int main() { int n,m,i,j,a,b,t; while(cin>>n>>m,n+m) { for (i=1;i<=n;i++) for (j=1;j<=n;j++) map[i][j]=INF; for(i=1;i<=m;i++) { cin>>a>>b>>t; map[a][b]=map[b][a]=t; } Dijkstra(n); printf("%d\n",d[n]); } return 0; } </span><span style="font-size:18px;"> </span>
原文:http://blog.csdn.net/u012766950/article/details/38087131