Bad Cowtractors POJ - 2377

用最短路的方法找最长路。。。哎黑心商家没有好结果啊

链接:Bad Cowtractors POJ - 2377

ac:

#include<iostream>
#include<algorithm>

using namespace std;
const int maxn = 1000005;
struct node{
    int from,to,dis;
    
}edge[maxn];
int n,fa[maxn],m,ans,tree=0;
bool cmp(node a,node b)
{
    return a.dis>b.dis;
    
}
int find(int x)
{
    if(fa[x]==x)
        return x;
    return fa[x]=find(fa[x]);
}
void mix(int x,int y)
{
    x=find(x),y=find(y);
    if(x!=y) fa[y]=x;
}
int kruskal()
{
    sort(edge,edge+m,cmp);
    for(int i=0;i<=n;i++)
    {
        fa[i]=i;   //初始化
    }
    ans=0;
    for(int i=0;i<m;i++)
    {
        if(find(edge[i].from)!=find(edge[i].to))
        {
            mix(edge[i].from,edge[i].to);
            ans+=edge[i].dis;
            tree++;
        }
    }

    return ans;
}
int main()
{
    scanf("%d %d",&n,&m);
    
        for(int i=0;i<m;i++)
        {
            scanf("%d%d%d",&edge[i].from,&edge[i].to,&edge[i].dis);		
        }
        kruskal();
        if(tree<n-1)
            printf("-1");
        else
            printf("%d\n",kruskal());

} 

猜你喜欢

转载自blog.csdn.net/henu_xujiu/article/details/79368566
今日推荐