#include <iostream>#include <vector>#include <algorithm>using namespace std;struct e { int v1, v2, val;};vector<e> arr;vector<int> p;bool asd(e p1, e p2) { return p1.val < p2.val;}int find_p(int x) { if (p[x] == x) { return x; } else { return p[x] = find_p(p[x]); }}int main() { int i, j; int n, m; cin >> n >> m; arr.resize(m + 1); p.resize(n + 1); for (i = 1; i <= m; i++) { int a, b, c; cin >> a >> b >> c; arr[i].v1 = a; arr[i].v2 = b; arr[i].val = c; } for (i = 1; i <= n; i++) { p[i] = i; } sort(arr.begin() + 1, arr.end(), asd); int eg = 0; long long sum = 0; for (i = 1; i <= m; i++) { int d1 = find_p(arr[i].v1); int d2 = find_p(arr[i].v2); if (d1 != d2) { p[d2] = d1; sum += arr[i].val; if (++eg == n - 1) break; } } cout << sum << endl; return 0;}