以下是我的程序:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,fa[N];
struct miku
{
int u,v,t;
}a[N];
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
bool gz(miku x, miku y)
{
return x.t<y.t;
}
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
std::ios::sync_with_stdio(false);
cin.tie();cout.tie();
cin >> n >> m;
for(int i=1;i<=m;i++) cin >> a[i].u >> a[i].v >> a[i].t;
for(int i=1;i<=n;i++) fa[i]=i;
sort(a+1,a+m+1,gz);
for(int i=1;i<=m;i++)
{
if(n==1)
{
cout << a[i-1].t << endl;
break;
}
if(find(a[i].u)!=find(a[i].v)) n--;
fa[find(a[i].u)]=find(a[i].v);
}
if(n!=1) cout << "-1" << endl;
return 0;
}
洛谷上测第二个点是不过的,但是把数据下载下来后在本地测试确是正确的,不是很理解...求帮查QAQ