zoukankan      html  css  js  c++  java
  • UVA 1395 Slim Span

    题意:

      要求的是所有生成树中最大边与最小边差值最小的那个。

    分析:

      其实可以利用最小瓶颈生成树,就是最小生成树这一性质,枚举原图的最小边,然后找相应生成树的最大边

    代码:

     

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    using namespace std;
    const int maxn=110;
    const int INF=10000000000;
    struct edge
    {
        int x,y;
        int d;
        bool operator <(const edge &a)const
        {
            return d<a.d;
        }
    }e[maxn*maxn];
    int fa[maxn];
    int n,m;
    int maxt;
    int find(int x)
    {
        return fa[x]==x?x:fa[x]=find(fa[x]);
    }
    int kruskal(int x)
    {
        maxt=-1;
        int cnt=0;
        int i;
        for(i=0;i<=n;i++)
            fa[i]=i;
        for(i=x;i<m;i++)
        {
            int pa=e[i].x;
            int pb=e[i].y;
            int d=e[i].d;
            int X=find(pa);
            int Y=find(pb);
            if(X!=Y)
            {
                fa[X]=Y;
                maxt=max(d,maxt);
                if(++cnt==n-1)
                    return 1;
            }
        }
        return 0;
    }
    int main()
    {
        while(scanf("%d%d",&n,&m))
        {
            if(n==0&&m==0)
                break;
            int i;
            for(i=0;i<m;i++)
                scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].d);
            sort(e,e+m);
            int ans=INF;
            for(i=0;i<m;i++)
            {
                if(kruskal(i)==1)
                {
                    ans=min(ans,maxt-e[i].d);
                }
            }
            if(ans==INF)
                printf("-1
    ");
            else
                printf("%d
    ",ans);
        }
    }

      

  • 相关阅读:
    全排列算法(java实现) 组合算法实现
    int -2147483648 ----- 2147483647
    Gradel 多渠道打包 代码混淆
    Android开发环境搭建
    自定义相册、九宫格显示图片
    新技术:retrofit
    新技术:dagger
    主流架构:MVVP
    GreenDao3.2的使用
    第三方框架:EventBus
  • 原文地址:https://www.cnblogs.com/137033036-wjl/p/4907527.html
Copyright © 2011-2022 走看看