不說了
#include<bits/stdc++.h>
using namespace std;
struct edge{
int from;
int to;
int cost;
}G[200005];
int n,m,cnt=0,ans=0,ct=0;
int p[5005];
int find(int x){return p[x]==x?x:p[x]=find(p[x]);}
bool cmp(edge A,edge B){
return A.cost<B.cost;
}
void Init(){
for(int i=1;i<=5000;i++)
p[i]=i;
}
int main(){
Init();
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
G[++cnt].from=x;
G[cnt].to=y;
G[cnt].cost=z;
}
sort(G+1,G+cnt+1,cmp);
for(int i=1;i<=m;i++){
int a=G[i].from,b=G[i].to;
int r1=find(a),r2=find(b);
if(r1==r2)continue;
if(r1!=r2){
ans+=G[i].cost;
p[r1]=r2;
ct++;
}
if(ct==n-1)break;
}
printf("%d",ans);
return 0;
}