rt,我不是很能理解
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#define re register
using namespace std;
const int N = 1e6 + 5;
int n,m,k,ans/*,cnt*/;
int fa[N];
inline int find(int x){
if(x == fa[x]){
return x;
}else{
return fa[x] = find(fa[x]);
}
}
struct edge{
int u,v,w;
}e[N];
inline bool cmp(edge a,edge b){
return a.w > b.w;
}
inline void cs(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
int main(){
cs();
cin>>n>>m>>k;
for(re int i = 1;i <= n;i ++){
fa[i] = i;
}
for(re int i = 1;i <= m;i ++){
int u,v,w;
cin>>u>>v>>w;
e[i].u = u;
e[i].v = v;
e[i].w = w;
}
sort(e + 1,e + n + 1,cmp);
for(re int i = 1;i <= m && k != 0;i ++){
int x = find(e[i].u);
int y = find(e[i].v);
if(x != y){
fa[x] = y;
k --;
ans += e[i].w;
}
}
cout<<ans<<"\n";
return 0;
}