zoukankan      html  css  js  c++  java
  • poj 3522 Slim Span 最大边减最小边最小的生成树

    枚举最小边进行kruskal。

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    #define maxn 120
    #define maxm 10000
    struct edge
    {
        int u,v,w;
    }e[maxm];
    int p[maxn],n,m;
    int find(int x)
    {
        if(x==p[x]) return x;
        return p[x]=find(p[x]);
    }
    void link(int a,int b)
    {
        int fa=find(a);
        int fb=find(b);
        if(fa!=fb)
            p[fa]=fb;
    }
    int cmp(const void *a,const void *b)
    {
        edge aa=*(const edge*)a;
        edge bb=*(const edge*)b;
        return aa.w-bb.w;
    }
    int main()
    {
        while(1)
        {
            scanf("%d%d",&n,&m);
            if(n+m==0) break;
            int i,j;
            int u,v,w;
            int l,r;
            for(i=0;i<m;i++)
                scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
            qsort(e,m,sizeof(e[0]),cmp);
            int minn=10000000;
            for(l=0;l<m;l++)
            {
                int num=0;
                for(i=1;i<=n;i++) p[i]=i;
                for(i=l;i<m;i++)
                {
                    u=e[i].u;
                    v=e[i].v;
                    w=e[i].w;
                    if(find(u)!=find(v))
                    {
                        link(u,v);
                        r=w;
                        num++;
                    }
                }
                if(num==(n-1)&&(r-e[l].w)<minn)
                    minn=r-e[l].w;
            }
            if(minn==10000000) printf("-1
    ");
            else printf("%d
    ",minn);
        }
        return 0;
    }
  • 相关阅读:
    New-SAN-FENG-YUN-三
    San丰-Cloud
    SpringBoot+MySQL+MyBatis+Shiro+AdminLTE
    SanFeng-Clound
    SanFengClound
    传奇音乐设置
    热血传奇GOM引擎问题集锦
    app测试
    接口测试
    题目
  • 原文地址:https://www.cnblogs.com/vermouth/p/3839930.html
Copyright © 2011-2022 走看看