码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1874

时间:2017-06-05 18:59:42      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:end   sizeof   can   color   ems   std   map   oid   define   

 1 #include <bits/stdc++.h>
 2 #define inf 0x3f3f3f3f
 3 
 4 using namespace std;
 5 
 6 int N, M;
 7 int map1[205][205];
 8 int d[205];
 9 int vis[205];
10 void dij(int start)
11 {
12     for(int i=0; i<N; i++)
13     {
14         d[i]=(i==start?0:inf);
15     }
16     for(int i=0; i<N; i++)
17     {
18         int ij=inf, u;
19         for(int j=0; j<N; j++)
20         {
21             if(!vis[j]&&d[j]<=ij)
22             {
23                 ij=d[j];
24                 u=j;
25             }
26         }
27         vis[u]=1;
28         if(ij==inf) break;
29         for(int v=0; v<N; v++)
30         {
31             if(!vis[v])
32                 d[v]=min(d[v], map1[u][v]+d[u]);
33         }
34     }
35 }
36 int main()
37 {
38     while(scanf("%d %d", &N, &M)!=EOF)
39     {
40         memset(vis, 0, sizeof(vis));
41         for(int i=0; i<N; i++)
42         {
43             for(int j=0; j<N; j++)
44             {
45                 map1[i][j]=(i==j?0:inf);
46             }
47         }
48         for(int i=0; i<M; i++)
49         {
50             int x, y, z;
51             scanf("%d%d%d", &x, &y, &z);
52             if(z<map1[x][y])
53             {
54                 map1[x][y]=map1[y][x]=z;
55             }
56         }
57         int s, t;
58         scanf("%d%d", &s, &t);
59         dij(s);
60         if(d[t]==inf) printf("-1\n");
61         else cout <<d[t] <<endl;
62     }
63 
64     return 0;
65 }

 

hdu 1874

标签:end   sizeof   can   color   ems   std   map   oid   define   

原文地址:http://www.cnblogs.com/GrayArchimage/p/6946396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!