1 struct node { 2 int u, v, w; 3 4 bool operator<(const node &b) const { 5 return w < b.w; 6 } 7 }a[M]; 8 9 int find(int x) { 10 if (x == f[x]) { 11 return x; 12 } 13 return f[x] = find(f[x]); 14 } 15 16 void union1(int x,int y) { 17 f[x] = y; 18 } 19 20 int main() { 21 scanf("%d%d", &n, &m); 22 for (int i = 1; i <= n; i++) { 23 f[i] = i; 24 } 25 for (int i = 1; i <= m; i++) { 26 scanf("%d%d%d", &a[i].u, &a[i].v, &a[i].w); 27 } 28 sort(a + 1, a + m + 1); 29 for (int i = 1; i <= m; i++) { 30 int x = find(a[i].u), y = find(a[i].v); 31 if (x != y) { 32 union1(x, y); 33 k++; 34 ans += a[i].w; 35 } 36 if (k == n - 1) { 37 break; 38 } 39 } 40 printf("%d ", ans); 41 }