刷题——poj 2377 Bad Cowtractors

来源:互联网 发布:surf算法原理 编辑:程序博客网 时间:2024/06/10 08:34
/*
在n个仓库间建立网络从1到n,a仓库跟b仓库的花费为c
应为仓库主比较抠门,所以承包业务的人要令仓库主的花费最大
同时不能形成环,若无法建立网络则输出-1否则输出最大费用
最小生成树改成最大生成树做


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


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


GR G[21000];
int n,m,rt[1100];


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 sum=0,l=1;


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


            if(a!=b)
            {
                sum+=G[i].w;
                rt[a]=b;
                l++;
            }
        }


        if(l!=n)
        {
            sum=-1;
        }


        printf("%d\n",sum);
    }
    return 0;
}
原创粉丝点击