• 最平衡生成树


    题目描述
    学习完最小生成树后,老师只给出几道模板题,为了尽快提升自己的编程能力,小C同学给自己出了这样一道题:最平衡生成树。
    最平衡生成树是这样定义的,一个有 n 个结点的连通图的生成树包含原图中的所有n个结点,并且最长边与最短边的差值最小。
    现在给你一个有n个结点的图,求最平衡生成树中最长边与最短边的差值。
    输入
    输入第一行为n和m两个正整数,分别表示图的结点数和边数。
    以下m行每行包含三个数a,b,w,分别表示每条边的两个端点和边的权值。
    输出
    输出满足题目要求的最小值,如果找不到最平衡生成树,则输出-1。
    样例输入
    4 5
    1 2 3
    1 3 5
    1 4 6
    2 4 6
    3 4 7
    样例输出
    1
    提示
    【数据范围】
    对于100%的数据,2<=n<=100,0<=m<=n(n-1)/2,w<=10000。 
    【样例输入2】 
    3 0 
    【样例输出2】 
    -1 
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define N 105
     4 int pre[N],n,m,ans=-1;
     5 struct lhy
     6 {
     7     int x,y,cost;
     8 }glq[N*(N-1)/2];
     9 int find(int t)
    10 {
    11     while(t!=pre[t]) t=pre[t]=pre[pre[t]];
    12     return t;
    13 }
    14 bool cmp(lhy a,lhy b)
    15 {
    16     return a.cost<b.cost;
    17 }
    18 int main()
    19 {
    20     scanf("%d%d",&n,&m);
    21     for(int i=1;i<=m;i++)
    22     {
    23         scanf("%d%d%d",&glq[i].x,&glq[i].y,&glq[i].cost);
    24     }
    25     sort(glq+1,glq+m+1,cmp);
    26     for(int i=1;i<=m;i++)
    27     {
    28         
    29         for(int j=1;j<=n;j++) pre[j]=j;
    30         int cnt=0;
    31         for(int j=i;j<=m;j++)
    32         {
    33             int lhy_s=find(glq[j].x),glq_zz=find(glq[j].y);
    34             if(lhy_s==glq_zz) continue;
    35             pre[lhy_s]=glq_zz;
    36             cnt++;
    37             if(cnt==n-1) 
    38             {
    39                 if(ans==-1||ans>(glq[j].cost-glq[i].cost)) ans=glq[j].cost-glq[i].cost;
    40                 break;
    41             }
    42         }
    43     }
    44     printf("%d",ans);
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    随手记
    boost::asio::udp 异步
    boost::asio::tcp 异步
    boost::asio::tcp 同步
    QML::MouseArea
    boost::concurrent::sync_queue
    std::chrono::时钟
    数据结构::队列
    数据结构::栈
    数据结构::线性表
  • 原文地址:https://www.cnblogs.com/jiuduSHENBENG/p/10542533.html
Copyright © 2020-2023  润新知