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 确 认 取 消
  • 相关阅读:
    H2嵌入式数据库的各种连接方式
    大数据平台建设的思考
    hive中的一些参数
    sqoop job 踩过的坑
    【转】awk、nawk、mawk、gawk的简答介绍
    awk用法
    hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
    hive中order by,sort by, distribute by, cluster by的用法
    python连接mysql
    pycharm注册码
  • 原文地址:https://www.cnblogs.com/huangriq/p/2497657.html
Copyright © 2011-2022 走看看