hdu2544最短路
http://acm.hdu.edu.cn/showproblem.php?pid=2544
View Code
1 #include<stdio.h> 2 #include<string.h> 3 const int oo = 1<<28 ; 4 const int maxn = 1005 ; 5 int map[maxn][maxn] ; 6 int visit[maxn] ; 7 int n, m ; 8 int len ; 9 int floyd() 10 { 11 for(int k=1; k<=len; k++) 12 { 13 for(int i=1; i<=len; i++) 14 { 15 for(int j=1; j<=len; j++) 16 { 17 if(!visit[j]&&map[i][k]+map[k][j]<map[i][j]) 18 { 19 map[i][j] = map[i][k] + map[k][j] ; 20 } 21 } 22 } 23 } 24 return 0 ; 25 } 26 int init() 27 { 28 for(int i=1; i<=maxn; i++) 29 { 30 for(int j=1; j<=maxn; j++) 31 { 32 map[i][j] = oo ; 33 } 34 } 35 return 0 ; 36 } 37 38 int main() 39 { 40 while(scanf("%d%d", &n, &m)!=EOF) 41 { 42 if(n==0&&m==0) 43 break ; 44 init() ; 45 int u, v, w ; 46 len = 0 ; 47 for(int i=1; i<=m; i++) 48 { 49 scanf("%d%d%d", &u, &v, &w) ; 50 if(map[u][v]>w) 51 { 52 map[u][v] = w ; 53 map[v][u] = w ; 54 } 55 if(u>len) len = u ; 56 if(v>len) len = v ; 57 } 58 memset(visit, 0, sizeof(visit)) ; 59 map[0][1] = 0 ; 60 floyd() ; 61 printf("%d\n", map[1][n]) ; 62 } 63 return 0 ; 64 }