USACO 3.1 Agri-Net

TASK: agrinet
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 4024 KB]
   Test 2: TEST OK [0.000 secs, 4024 KB]
   Test 3: TEST OK [0.000 secs, 4024 KB]
   Test 4: TEST OK [0.000 secs, 4024 KB]
   Test 5: TEST OK [0.000 secs, 4024 KB]
   Test 6: TEST OK [0.000 secs, 4024 KB]
   Test 7: TEST OK [0.000 secs, 4024 KB]
   Test 8: TEST OK [0.000 secs, 4024 KB]
   Test 9: TEST OK [0.000 secs, 4024 KB]
   Test 10: TEST OK [0.027 secs, 4024 KB]

All tests OK.
1 /*
2 PROG: agrinet
3 ID: jiafeim1
4 LANG: C++
5 */
6 #include <algorithm>
7 #include <iostream>
8 #include <fstream>
9
10
11 int top=0;
12 using namespace std;
13 int n;
14 bool haveDo[505]={false};
15 int dist[505];
16 long map[505][505];
17 int main()
18 {
19 std::ifstream fin("agrinet.in");
20 std::ofstream fout("agrinet.out");
21
22 fin>>n;
23
24 long temp;
25 for(int i = 0;i !=n;++i)
26 for(int j = 0 ;j!=n;++j)
27 {
28 fin>>map[i][j];
29 }
30 for(int i = 0 ;i!=n;++i)
31 {
32 dist[i] = map[0][i];
33 }
34 long res = 0 ;
35 int count = 0;
36 haveDo[0] = true;
37 while(count++<n-1)
38 {
39 int cur;
40 long min = 9999999;
41
42 for(int i = 0;i!=n;++i)
43 {
44 if(!haveDo[i] && dist[i]<min)
45 {
46 min=dist[i];
47 cur=i;
48 }
49 }
50 haveDo[cur] = true;
51 res+=min;
52 for(int j = 0;j!=n;++j)
53 {
54 if(dist[j]>map[cur][j])
55 dist[j]=map[cur][j];
56 }
57
58 }
59 fout<<res<<endl;
60 fin.close();
61 fout.close();
62 return 0;
63 }
posted @ 2011-05-09 10:55  幻魇  阅读(302)  评论(0编辑  收藏  举报