#include <bits/stdc++.h>
using namespace std;
struct graph
{
int u, v, c;
} gra[214514];
int fa[214514], tot, sum;
int n, m;
bool cmp(graph a, graph b)
{
return a.c < b.c;
}
int _find(int x)
{
return (x == fa[x] ? x : fa[x] = _find(fa[x]));
}
void _merge(int u, int v)
{
int x = _find(u), y = _find(v);
if (x != y)
fa[x] = y;
}
void kru()
{
for (int i = 1; i <= m; i++)
{
int a = _find(gra[i].u), b = _find(gra[i].v);
if (a == b) continue;
_merge(a, b);
sum += gra[i].c;
tot++;
if (tot == n - 1) return;
}
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v, c;
cin >> u >> v >> c;
gra[i].u = u, gra[i].v = v, gra[i].c = c;
}
for (int i = 1; i <= n; i++)
{
fa[i] = i;
}
sort(gra + 1, gra + 1 + m, cmp);
kru();
cout << sum;
return 0;
}
结构体遍历图懵逼中。