【HDU1233】还是畅通工程(MST基础题)

无坑,裸题。直接敲就恩那个AC。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cctype>
 6 #include <algorithm>
 7 #include <numeric>
 8
 9 #define typec int
10 using namespace std;
11
12 const int V = 105;
13 const int inf = 0xffff;
14 int vis[V]; typec lowc[V], Map[V][V];
15
16 typec prim (typec cost[][V], int n) {
17     int i, j, p;
18     typec minc, res = 0;
19     memset(vis, 0, sizeof(vis));
20     vis[0] = 1;
21     for (int i = 1; i < n; ++ i) lowc[i] = cost[0][i];
22     for (int i = 1; i < n; ++ i) {
23         minc = inf; p = -1;
24         for (j = 0; j < n; ++ j) {
25             if (0 == vis[j] && minc > lowc[j]) {
26                 minc = lowc[j]; p = j;
27             }
28         }
29         if (inf == minc) return -1;
30         res += minc; vis[p] = 1;
31         for (j = 0; j < n; ++ j) {
32             if (0 == vis[j] && lowc[j] > cost[p][j])
33             lowc[j] = cost[p][j];
34         }
35     }
36     return res;
37 }
38
39 int main () {
40     int n;
41     while (~scanf("%d", &n) && n) {
42         for (int i = 0; i < V; ++ i) {
43             for (int j = 0; j < V; ++ j) {
44                 if (i == j) Map[i][j] = 0;
45                     else Map[i][j] = inf;
46             }
47         }
48         for (int i = 0; i < n * (n - 1) / 2; ++i) {
49             int x, y, c; scanf("%d%d%d", &x, &y, &c);
50             if (x == y) continue;
51             Map[x - 1][y - 1] = Map[y - 1][x - 1] = min(Map[x - 1][y - 1], c);
52         }
53         cout << prim(Map, n) << endl;
54     }
55     return 0;
56 }

【HDU1233】还是畅通工程(MST基础题)

时间: 2024-10-07 14:21:23

【HDU1233】还是畅通工程(MST基础题)的相关文章

【HDU1875】畅通工程再续(MST基础题)

更改成实形数即可.第一次敲完直接交,CE了一次.晕. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 10 #define t

【HDU1879】继续畅通工程(MST基础题)

真心大水题...不多说. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 10 #define typec int 11 u

HDU1233 - 还是畅通工程 最小生成树,用了三种姿势AC

HDU1233 - 还是畅通工程 : http://acm.hdu.edu.cn/showproblem.php?pid=1233 用了三种姿势AC这题之后, 感觉对最小生成树的理解又更深了一层. 嗯, 让你们看看我用的是哪三种姿势 方法 1 : #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const in

【HDU1102】Constructing Roads(MST基础题)

最小生成树水题.prim一次AC 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 10 #define typec int

【HDU1162】Eddy&#39;s picture(MST基础题)

很基础的点坐标MST,一不留神就AC了, - - !! 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #include <numeric> 9 #include &

【HDU1301】Jungle Roads(MST基础题)

爽爆.史上个人最快MST的记录7分40s..一次A. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #include <numeric> 9 10 #define

【HDU3371】Connect the Cities(MST基础题)

注意输入的数据分别是做什么的就好.还有,以下代码用C++交可以过,而且是500+ms,但是用g++就会TLE,很奇怪. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #incl

HDU1233 还是畅通工程 【最小生成树Prim】

还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25591    Accepted Submission(s): 11370 Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路

【HDU2122】Ice_cream’s world III(MST基础题)

2坑,3次WA. 1.判断重边取小.2.自边舍去. (个人因为vis数组忘记初始化,WA了3次,晕死!!) 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cmath> 6 #include <cctype> 7 #include <algorithm> 8 #include &l