#include using namespace std; struct edge { int x, y, w; } a[10001]; int f[101]; int ans, cnt; bool cmp(edge x, edge y) { return x.w < y.w; } //int getDistance(int x1, int y1, int x2, int y2) { // return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); // 最后要求距离的平方 //} int n, m; int find(int x) { if (x == f[x]) return x; return f[x]=find(f[x]); } void merge(int x, int y) { int fx = find(x); int fy = find(y); if (fx != fy) { //如果不在一个集合 f[fy] = fx; } } void kruskal() { for (int i = 1; i <= n; i++) { f[i] = i; } for (int i = 1; i <= m; i++) { int u=a[i].x; int v=a[i].y; if(find(u)!=find(v)) { cnt++; ans+=a[i].w; merge(u,v); } if(cnt==n-1) { break; } } } int main() { cin>>n>>m; for (int j = 1; j <= m; j++) { cin>>a[j].x>>a[j].y>>a[j].w; } sort(a + 1, a + m + 1, cmp); //排序 kruskal(); cout << ans << endl; return 0; } /* 6 9 2 4 11 3 5 13 4 6 3 5 6 4 2 3 6 4 5 7 1 2 1 3 4 9 1 3 2 */