hdu 1874 畅通工程续

http://acm.hdu.edu.cn/showproblem.php?pid=1874

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 500
 5 using namespace std;
 6 const int inf=1<<28;
 7 
 8 int g[maxn][maxn];
 9 int n,m,a,b,c,s,e;
10 
11 void inti()
12 {
13     for(int i=0; i<n; i++)
14     {
15         for(int j=0; j<n; j++)
16         {
17             if(i==j) g[i][j]=0;
18             else g[i][j]=inf;
19         }
20     }
21 }
22 int main()
23 {
24     while(scanf("%d%d",&n,&m)!=EOF)
25     {
26         inti();
27         for(int i=0; i<m; i++)
28         {
29             scanf("%d%d%d",&a,&b,&c);
30             g[a][b]=g[b][a]=min(g[a][b],c);
31         }
32         for(int k=0; k<n; k++)
33         {
34             for(int i=0; i<n; i++)
35             {
36                 if(g[i][k]==inf) continue;
37                 for(int j=0; j<n; j++)
38                 {
39                     g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
40                 }
41             }
42         }
43         scanf("%d%d",&s,&e);
44         if(g[s][e]==inf) printf("-1\n");
45         else printf("%d\n",g[s][e]);
46     }
47     return 0;
48 }
View Code

 

posted @ 2014-04-22 19:05  null1019  阅读(115)  评论(0编辑  收藏  举报