80 pts WA on #2 #3求条
#include<bits/stdc++.h>
using namespace std;
int s[101000];
struct rd{
int s,e,h;
}a[100000];
bool cmp(rd a,rd b){
return a.h<b.h;
}
int find(int x){
if(s[x]==x) return s[x];
s[x]=find(s[x]);
return s[x];
}
void merge(int x,int y){
int fx=find(x),fy=find(y);
s[fy]=fx;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) s[i]=i;
for(int i=1;i<=m;i++){
cin>>a[i].s>>a[i].e>>a[i].h;
}
int ans=0;
n--;
sort(a+1,a+1+m,cmp);
for(int i=1;i<=m&&n>0;i++){
if(find(a[i].s)!=find(a[i].e)){
merge(a[i].s,a[i].e);
ans=a[i].h;
n--;
}
}
cout<<ans;
return 0;
}