题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2143&cid=1186
1 #include<stdio.h> 2 #include<string.h> 3 const int INF=1<<29; 4 int map[101][101]; 5 int main() 6 { 7 int n,m,i,j,k,u,v,w; 8 while(~scanf("%d%d",&n,&m)) 9 { 10 for(i=1; i<=n; i++) 11 { 12 for(j=1; j<=n; j++) 13 map[i][j]=INF; 14 map[i][i]=0; 15 } 16 while(m--) 17 { 18 scanf("%d%d%d",&u,&v,&w); 19 if(map[u][v]>w) 20 { 21 map[u][v]=w; 22 map[v][u]=w; 23 } 24 } 25 for(k=1; k<=n; k++) 26 for(i=1; i<=n; i++) 27 for(j=1; j<=n; j++) 28 if(map[i][k]+map[k][j]<map[i][j]) 29 map[i][j]=map[i][k]+map[k][j]; 30 printf("%d ",map[1][n]); 31 } 32 }