zoukankan      html  css  js  c++  java
  • poj 3522(生成树)

    题意:求解一个图中生成树最大边与最小边的最小差值

    思路:循环去掉小边求残图的最小生成树,求得最小生成树的最长边与最短边的最小差值就是答案,容易证明与最小边差值最小的生成树最大边必然在最小生成树中。

    View Code
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 using namespace std;
     6 #define inf 0x3f3f3f3f
     7 #define N 110
     8 #define M N*N
     9 struct edge{
    10     int a,b,w;
    11 }e[M];
    12 int f[N];
    13 int comp(const void *a,const void *b)
    14 {
    15     return ((edge *)a)->w>((edge *)b)->w?1:-1;
    16 }
    17 int find(int x)
    18 {
    19     if(f[x]==x||f[x]==0)return x;
    20     f[x]=find(f[x]);
    21     return f[x];
    22 }
    23 int main()
    24 {
    25     int n,m;
    26     while(scanf("%d%d",&n,&m))
    27     {
    28         int min0=inf;
    29         if(n==0&&m==0)break;
    30         for(int i=0;i<m;i++)
    31         scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].w);
    32         qsort(e,m,sizeof(edge),comp);
    33         for(int i=0;i<=m-n+1;i++)
    34         {
    35             int c=0;
    36             memset(f,0,sizeof(f));
    37             for(int j=i;j<m;j++)
    38             {
    39                 int a0=find(e[j].a);
    40                 int b0=find(e[j].b);
    41                 if(a0==b0)continue;
    42                 else {
    43                     f[a0]=b0;
    44                     c++;
    45                     if(c==n-1){min0=min(min0,e[j].w-e[i].w);break;}
    46                 }
    47             }
    48             if(c<n-1)break;
    49         }
    50         if(min0<inf)printf("%d\n",min0);
    51         else printf("-1\n");
    52     }
    53     return 0;
    54 }
    55 
    56 关闭提示 关闭
    57 确 认 取 消
  • 相关阅读:
    流程图
    如何撰写简历
    产品经理-visio
    关于 EF 对象的创建问题
    LINQ To EF
    IQueryable 与 IEnumberable 接口的区别
    UWP自动填充控件AutoSuggestBox小优化
    xamarin UWP证书问题汇总
    xamarin UWP中MessageDialog与ContentDialog的区别
    xamarin UWP自定义圆角按钮
  • 原文地址:https://www.cnblogs.com/huangriq/p/2497657.html
Copyright © 2011-2022 走看看