zoukankan      html  css  js  c++  java
  • 最平衡生成树

    题目描述
    学习完最小生成树后,老师只给出几道模板题,为了尽快提升自己的编程能力,小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。 
    首先看到这道题时我想不就是一道裸的最小生成树吗,然后调了一上午......首先这是道最小生成树没错。
    不是裸的
    不是裸的
    不是裸的
    然后难点是会构成多个生成树,SO每一次都要将你个并查集(找父亲节点)数组重置,然后就找最小的就好了(就是裸的了)代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=110;
     4 struct str{
     5     int x,y,zhi;
     6 }a[(N*(N-1))/2];
     7 int biao_ji=-1;
     8 int f[(N*(N-1))/2];
     9 int n,m;
    10 bool cmp(str h1,str h2){
    11     return h1.zhi<h2.zhi;
    12 }
    13 int find(int k){
    14     if(f[k]==k) return k;
    15     else{
    16         f[k]=find(f[k]);
    17         return f[k];
    18     }
    19 }
    20 int main(){
    21     int ji_lu=0;
    22     cin>>n>>m;
    23     for(int i=1;i<=m;i++){
    24         cin>>a[i].x>>a[i].y>>a[i].zhi;26     }
    27     sort(a+1,a+m+1,cmp);
    28     int k=0;
    29     for(int i=1;i<=m;i++){
    30         for(int j=1;j<=n;j++) f[j]=j;//重置 
    31         int ji_lu=0;
    32         for(int j=i;j<=m;j++){
    33             int tx=find(a[j].x);
    34             int ty=find(a[j].y);
    35             if(tx==ty) continue;
    36             f[tx]=ty;//合并 
    37             ji_lu++;
    38             if(ji_lu==n-1){
    39                 if(biao_ji==-1||biao_ji>(a[j].zhi-a[i].zhi)) biao_ji=a[j].zhi-a[i].zhi;//找最小 
    40                 break;
    41             }
    42         }
    43     }
    44     cout<<biao_ji;//没了 
    45 }

    没了.......我的一上午啊,啊啊啊啊啊啊

  • 相关阅读:
    Ubuntu中用户名密码和root密码修改
    在Python中,输出格式:%d , %6d , %-6d, %06d , %.6f的一些区分
    定制的print()输出格式
    python编程系列---Pycharm快捷键(更新中....)
    webbrowser控件——Windows下的开发利器
    Windows读写文件的猫腻
    根据GUID获取设备信息
    转:APDU命令格式
    VC中添加消息响应函数
    VC 取消warning
  • 原文地址:https://www.cnblogs.com/dai-jia-ye/p/10542459.html
Copyright © 2011-2022 走看看