File tree 1 file changed +81
-4
lines changed
1 file changed +81
-4
lines changed Original file line number Diff line number Diff line change 1
- #include < iostream>
1
+ #include < iostream>
2
2
using namespace std ;
3
- /* coded by zzx */
4
- /* 这题和上一题一样只有一个用例并且还就是示例,所以直接偷鸡 */
3
+ #define MAX 100
4
+ /* coded by zzx 4.3 由于oj系统无法登录故没有针对oj上的测试用例测试,只是自己测试了一下,输入输出格式等都需要再更改 */
5
+
6
+ class Graph
7
+ {
8
+ public:
9
+ int G[6 ][6 ];
10
+ Graph (int num);
11
+ int prim (int num);
12
+ };
13
+
14
+ Graph::Graph (int num)
15
+ {
16
+ for (int i = 0 ; i < num; i++)
17
+ {
18
+ for (int j = 0 ; j < num; j++)
19
+ {
20
+ this ->G [i][j] = MAX;
21
+ }
22
+ }
23
+ int n;
24
+ cin >> n;
25
+ int x, y, weight;
26
+ for (int i = 0 ; i < n; i++)
27
+ {
28
+ cin >> x >> y >> weight;
29
+ this ->G [x][y] = weight;
30
+ this ->G [y][x] = weight;
31
+ }
32
+ }
33
+
34
+ int Graph::prim (int num)
35
+ {
36
+ int sum = 0 ,
37
+ min = MAX,
38
+ minid = 0 ;
39
+ // int g[num][num] = this->G;
40
+ int lowcost[num]; // lowcost[i]即表示起点到第i个点的最短路径
41
+ int mst[num]; // mst[i]表示最小生成树中第i个结点的前驱结点
42
+ for (int i = 1 ; i < num; i++)
43
+ {
44
+ // 将第一个结点作为最小生成树的根节点
45
+ lowcost[i] = this ->G [0 ][i];
46
+ mst[i] = 0 ;
47
+ }
48
+ mst[0 ] = 0 ;
49
+ for (int i = 1 ; i < num; i++)
50
+ {
51
+ /* 找出n-1个点,所以从1循环到n-1 *
52
+ * 不断循环找出每个点的最短路径 */
53
+ min = MAX;
54
+ minid = 0 ;
55
+ for (int i = 1 ; i < num; i++)
56
+ {
57
+ if (lowcost[i] < min && lowcost[i] != 0 )
58
+ {
59
+
60
+ min = lowcost[i];
61
+ minid = i;
62
+ }
63
+ }
64
+ sum += min;
65
+ lowcost[minid] = 0 ; // 找到了最小的结点,将其放入最小生成树中
66
+ for (int i = 1 ; i < num; i++)
67
+ {
68
+ //
69
+ if (this ->G [minid][i] < lowcost[i])
70
+ {
71
+ lowcost[i] = this ->G [minid][i];
72
+ mst[i] = minid;
73
+ }
74
+ }
75
+ }
76
+ return sum;
77
+ }
5
78
6
79
int main ()
7
80
{
8
- cout<<19 ;
81
+ int num;
82
+ cin >> num;
83
+ Graph *g = new Graph (num);
84
+ int w = g->prim (num);
85
+ cout << " 最小生成树的权值和为" << w << endl;
9
86
return 0 ;
10
87
}
You can’t perform that action at this time.
0 commit comments