应该不用写注释吧。。。
#include<bits/stdc++.h>
#define N
#define ll long long
#define re register
#define in inline
using namespace std;
in int read()
{
re int s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
return s*w;
}
int n,m,x,y,ti,cnt,ltk,a[100100],fa[10010];
struct ed{
int u,v,t;
}edge[100010];
queue<ed> q;
int find(int x)
{
if(x==fa[x]) return x;
else return fa[x]=find(fa[x]);
}
void hb(int x,int y){fa[find(x)]=find(y);}
bool cmp(ed a,ed b) {return a.t<b.t;}
int main()
{
n=read(),m=read();
ltk=n;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++) edge[i].u=read(),edge[i].v=read(),edge[i].t=read();
sort(edge+1,edge+m+1,cmp);
for(int i=1;i<=m;i++)
{
int fx=find(edge[i].u),fy=find(edge[i].v);
if(fx!=fy) hb(x,y),ltk--;
if(ltk==1)
{
cout<<edge[i].t;
return 0;
}
}
cout<<-1;
return 0;
}