#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
struct kk
{
int v,u,z;
}a[10010];
int f[10010];
int summ=0;
int getfather(int v)
{
if (f[v]==v) return v;
f[v]=getfather(f[v]);
return f[v];
}
void merge(int x,int y)
{
int fx,fy;
fx=getfather(x);
fy=getfather(y);
f[fx]=fy;
}bool judge(int x,int y)
{
int fx,fy;
fx=getfather(x);
fy=getfather(y);
return (fx==fy);
}
bool mycmp(kk x,kk y)
{
return x.z<y.z;
}
int n,m;void MST_Kruskal()
{
int c=0;
sort(a+1,a+m+1,mycmp);
for(int i=1;i<=m;i++)
if(!(judge(a[i].v,a[i].u)))
{
merge(a[i].v,a[i].u);
summ=a[i].z;
if(++c==n-1) break;//只有这边i在最小生成树里时才减
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
cin>>a[i].v>>a[i].u>>a[i].z;
MST_Kruskal();
cout<<summ<<endl;
return 0;
}
OJ P1225 调查干草
最新推荐文章于 2024-03-17 16:01:12 发布