HDU ACM 2066 一个人的旅行 (SPFA)

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

 

用来练习SPFA

有多个出发点事不必做多次的SPFA,只要把多个顶点初始化为0即.

 

//View Code
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <queue>
 4 using namespace std;
 5 const int MAX = 1100;
 6 const int INF = 0x3fffffff;
 7 int map[MAX][MAX];
 8 int start[MAX];
 9 int End[MAX];
10 int dis[MAX];
11 int used[MAX];
12 int mark;
13 int T,S,D;
14 int SPFA()
15 {
16     int i;
17     for(i=0;i<mark+1;i++)
18     {
19         dis[i] = INF;
20     }
21     queue <int> q;
22     for(i=0;i<S;i++)
23     {
24         dis[start[i]] = 0;
25         q.push(start[i]);
26         used[start[i]] = 1;
27     }
28     while(!q.empty())
29     {
30         int mid;
31         mid = q.front();
32         q.pop();
33         used[mid] = 0;
34         for(i=0;i<mark+1;i++)
35         {
36             if(dis[i] > dis[mid] + map[mid][i])
37             {
38                 dis[i] = dis[mid] + map[mid][i];
39                 if(!used[i])
40                 {
41                     q.push(i);
42                     used[i] = 1;
43                 }
44             }
45         }
46     }
47     int MIN = INF;
48     for(i=0;i<D;i++)
49     {
50         MIN = min(MIN,dis[End[i]]);
51     }
52     return MIN;
53 }
54 int main()
55 {
56     while(cin>>T>>S>>D)
57     {
58         int i,j;
59         for(i=0;i<MAX;i++)
60         {
61             for(j=0;j<MAX;j++)
62             {
63                 map[i][j] = INF;
64             }
65         }
66         mark = 0;
67         for(i=0;i<T;i++)
68         {
69             int a,b,c;
70             cin>>a>>b>>c;
71             if(c < map[a][b])
72             {
73                 map[a][b] = map[b][a] = c;
74             }
75             mark = max(mark,a);
76             mark = max(mark,b);
77         }
78         for(i=0;i<S;i++)
79         {
80             cin>>start[i];
81         }
82         for(i=0;i<D;i++)
83         {
84             cin>>End[i];
85         }
86         cout<<SPFA()<<endl;
87     }
88     return 0;
89 }

 

posted @ 2012-09-05 09:59  zx雄  阅读(551)  评论(0编辑  收藏  举报