P1547 [USACO05MAR]Out of Hay S

#include<iostream>
#include<algorithm> 
using namespace std;
int n,m;
long long fa[100000001];
struct hay
{
    int x,y,z;
}a[10001];
inline bool cmp(hay a,hay b)
{
    return a.z<b.z;
}

inline int find(int t)
{
    if(fa[t]==t) return t;
    else return fa[t]=find(fa[t]);
} 

inline void me(int r1,int r2)
{
    int s1=find(r1);
    int s2=find(r2);
    fa[s1]=s2;  
}

inline void Kruskal()
{
    int k=0;
    int k1,k2;
    int ans=0;
    for(int i=1;i<=m;i++)
    {
        k1=find(a[i].x);
        k2=find(a[i].y);
        if(k1==k2) continue;
        k++;
        me(k1,k2);
     
        ans=max(a[i].z,ans);
        if(k==n-1) break;
      
    }
    cout<<ans;
}
int main()
{
    cin>>n>>m;
    int i;
    for(i=1;i<=n;i++)
    {
        fa[i]=i;
    }

    for(i=1;i<=m;i++)
    {
        cin>>a[i].x>>a[i].y>>a[i].z;
    } 
    sort(a+1,a+m+1,cmp);
    Kruskal();
    return 0;
}

  

原文地址:https://www.cnblogs.com/ruanmowen/p/12730052.html