PTA7-13校园建设

一、题目描述

  

 

 二、解题思路

  kruscal模板题

三、代码实现

 1 #include "bits/stdc++.h"
 2 #define PII pair<int,int>
 3 #define rep(i,z,n) for(int i = z;i <= n; i++)
 4 #define per(i,n,z) for(int i = n;i >= z; i--)
 5 #define ll long long
 6 #define db double
 7 #define vi vector<int>
 8 #define debug(x) cerr << "!!!" << x << endl;
 9 using namespace std;
10 inline ll read()
11 {
12     ll s,r;
13     r = 1;
14     s = 0;
15     char ch = getchar();
16     while(ch < '0' || ch > '9'){
17         if(ch == '-')
18             r = -1;
19         ch = getchar();
20     }
21     while(ch >= '0' && ch <= '9'){
22         s = (s << 1) + (s << 3) + (ch ^ 48);
23         ch = getchar();
24     }
25     return s * r;
26 }
27 inline void write(ll x)
28 {
29     if(x < 0) putchar('-'),x = -x;
30     if(x > 9) write(x / 10);
31     putchar(x % 10 + '0');
32 }
33 const int inf = 1e9 + 10;
34 struct node{
35     int u;
36     int v;
37     int w;
38 }e[111111];
39 int a[1100];
40 int n,m;
41 int cnt;
42 bool cmp(node a,node b)
43 {
44     return a.w < b.w;
45 }
46 int find(int u)
47 {
48     return u == a[u] ?u:a[u] = find(a[u]);
49 }
50 int main()
51 {
52     n = read();
53     m = read();
54     for(int i = 1;i <= n;i++)
55         a[i] = i;
56     for(int i = 1;i <= m;i++){
57         int u,v,w;
58         u = read();
59         v = read();
60         w = read();
61         e[cnt].u = u;
62         e[cnt].v = v;
63         e[cnt].w = w;
64         cnt++;
65         e[cnt].u = v;
66         e[cnt].v = u;
67         e[cnt].w = w;
68         cnt++;
69     }
70     sort(e,e + cnt,cmp);
71     int cnt1 = 0;
72     int ans = 0;
73     for(int i = 1;i <= cnt;i++){
74         int sx = e[i].u;
75         int sy = e[i].v;
76         if(find(sx) != find(sy)){
77             a[find(sx)] = find(sy);
78             cnt1++;
79             ans+=e[i].w;
80         }
81         if(cnt1 == n - 1)
82             break;
83     }
84     if(cnt1 < n - 1)
85         cout << -1 << endl;
86     else 
87         cout << ans;
88     return 0;
89 }
posted @ 2022-03-10 21:51  scannerkk  阅读(237)  评论(0)    收藏  举报