- 第一次接触Kruskal:sad:,看到一篇博客写Kruskal是并查集的完美应用,关于并查集这篇博客讲的很好,转一下
- AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int u,v,w;
bool operator <(const node&b)const
{
return w<b.w;
}
}a[110000];
int f[110000];
void init(int n)
{
for(int i=1;i<=n;i++)
f[i]=i;
}
int find(int x)
{
if(f[x]==x)
return x;
return f[x]=find(f[x]);
}
void unite(int x,int y)
{
x=find(x),y=find(y);
if(x==y)
return ;
f[x]=y;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m,ans=0;
scanf("%d%d",&n,&m);
init(n);
memset(a,0,sizeof(a));
for(int i=0;i<m;i++)
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
sort(a,a+m);
for(int i=0;i<m;i++)
{
if(find(a[i].u)!=find(a[i].v))
{
ans=a[i].w;
unite(a[i].u,a[i].v);
}
}
printf("%d\n",ans);
}
return 0;
}