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 }

 

 

 

 

posted @ 2013-03-05 21:10  yelan@yelan  阅读(321)  评论(0编辑  收藏  举报