https://www.luogu.com.cn/problem/P1111
我全部TLE
Code
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
struct M
{ int u,v,w;
}a[N+1];
int n,m;
int f[1001];
bool t;
inline int read()
{ register int f=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{ if(ch=='-')
{ w=-1;
ch=getchar();
}
}
while(ch>='0'&&ch<='9')
{ f=f*10+ch-'0';
ch=getchar();
}
return f*w;
}
bool cmp(M x,M y)
{ return x.w<y.w;
}
int find(int x)
{ if(f[x]==x)
{ return f[x];
}
f[x]=find(f[x]);
return f[x];
}
void hb(int x,int y)
{ int fx=find(x);
int fy=find(y);
f[fx]=fy;
}
int main()
{ n=read();
m=read();
for(int i=1;i<=m;i++)
{ a[i].u=read();
a[i].v=read();
a[i].w=read();
}
t=false;
sort(a+1,a+1+m,cmp);
for(int i=1;i<=n;i++)
{ f[i]=i;
}
for(int i=1;i<=m;i++)
{ int fx=find(a[i].u);
int fy=find(a[i].v);
if(fx!=fy)
{ hb(a[i].u,a[i].v);
n--;
}
if(n==1)
{ cout<<a[i].w<<endl;
t=1;
break;
}
}
if(!t)
{ cout<<"-1"<<endl;
}
}