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

 

你可能感兴趣的:(HDU)