刷题——POJ 2395 Out of Hay

来源:互联网 发布:python自动登录网页 编辑:程序博客网 时间:2024/06/05 08:52
/*
奶牛没草吃,有n个农场,从1号农场出发走遍所有的农场弄草
路上要喝水,每个农场都可以补充水,路上消耗的水是两农场之间的距离
求在总路程最短的情况下所需要携带的最大水量
最小生成树,记录最大加入路径


*/
#include <stdio.h>
#include <algorithm>
using namespace std;


struct GR
{
    int u,v,w;
};


GR G[11000];
int n,m,rt[2100];


bool cmp(GR a,GR b)
{
    return a.w<b.w;
}


void init()
{
    for(int i=1;i<=n;i++)
    {
        rt[i]=i;
    }
}


int find(int x)
{
    if(x!=rt[x])
    {
        rt[x]=find(rt[x]);
    }


    return rt[x];
}


int main()
{
    while(~scanf("%d %d",&n,&m))
    {


        init();


        for(int i=0;i<m;i++)
        {
            scanf("%d %d %d",&G[i].u,&G[i].v,&G[i].w);
        }


        sort(G,G+m,cmp);


        int ans=0;


        for(int i=0;i<m;i++)
        {
            int a=find(G[i].u);
            int b=find(G[i].v);


            if(a!=b)
            {
                rt[a]=b;


                if(G[i].w>ans)
                {
                    ans=G[i].w;
                }
            }
        }


        printf("%d\n",ans);
    }
    return 0;
}