#include<stdio.h> #include<string.h> #include<stdlib.h> int n,m,set[124]; struct val { int x,y,v; }e[10010]; int find(int x) { return set[x]==x?x:find(set[x]); } int kruskal() { int sum=0; for(int i=1;i<=m;i++) { int x=e[i].x,y=e[i].y,v=e[i].v; int a=find(x),b=find(y); if(a!=b) { set[b]=a; sum+=v; } } return sum; } int cmp(const void *a,const void *b) { return ((val *)a)->v-((val *)b)->v; } int main() { int x,y,v; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++)//初始化 { set[i]=i; } for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&v); e[i].x=x; e[i].y=y; e[i].v=v; } qsort(e+1,m,sizeof(e[0]),cmp);快排 int res=kruskal(); printf("%d\n",res); } system("pause"); return 0; }