题意:

      让你求一颗生成树,使得最长边和最短边长度差值最小。

思路:

     额!!!感觉这个思路会超时,但是ac了,暂时没什么别的好思路,那么就先说下这个思路,大牛要是有好的思路希望能在下面留言,相互学习,我的方法是先把所有的边都按长度排序,然后枚举没一颗生成树,这样枚举能得到正确答案的原因是,如果是求最小的差值,那么最终的答案一定是在sort之后的连续的以段,我们只要枚举每一段就行了,但是这样的时间复杂度是O(M^2)的,如果碰到奇葩数据估计一组可能跑到将近1s这样就T了,呵呵。

#include<stdio.h>

#include<string.h>

#include<algorithm>

#define N 110

using namespace std;

typedef struct

{

   int a ,b ,c;

}EDGE;

EDGE edge[N*N/2];

int mer[N];

int finds(int x)

{

    return x == mer[x] ? x : mer[x] = finds(mer[x]);

}

bool camp(EDGE a ,EDGE b)

{

     return a.c < b.c;

}

int main ()

{

    int n ,m ,i ,j ,Ans;

    while(~scanf("%d %d" ,&n ,&m) && n + m)

    {

        Ans = -1;            

        for(i = 1 ;i <= m ;i ++)

        scanf("%d %d %d" ,&edge[i].a ,&edge[i].b ,&edge[i].c);

        sort(edge + 1 ,edge + m + 1 ,camp);

        for(i = 1 ;i <= m ;i ++)

        {

            for(j = 1 ;j <= n ;j ++)

            mer[j] = j;

            int sss = 0; 

            for(j = i ;j <= m ;j ++) 

            {

               int xx = finds(edge[j].a);

               int yy = finds(edge[j].b);

               if(xx != yy) sss++ ,mer[xx] = yy;

               if(sss == n - 1)

               {

                  if(Ans == -1 || Ans > edge[j].c - edge[i].c)

                  Ans = edge[j].c - edge[i].c;

                  break;

               }

            }

        }

        printf("%d\n" ,Ans);

    }

    return 0;

}  


最新文章

  1. 浅谈Excel开发:十一 针对64位Excel的插件的开发和部署
  2. 普通工程转为mvn工程
  3. 20145320《Java程序设计》第4周学习总结
  4. Java知多少(109)数据库更新
  5. DP:Skiing(POJ 1088)
  6. java的定时器用法
  7. information_schema.optimizer_trace学习
  8. Windows 7/Vista 开机自动登录
  9. ubuntu重启、关机命令
  10. input标签 disabled 和 readonly的区别
  11. ckplayer跨域调用
  12. MD5加密算法的Java版本
  13. android底部菜单栏的编写
  14. 743. Network Delay Time
  15. Deep TEN: Texture Encoding Network
  16. Linux实战教学笔记15:用户管理初级(下)
  17. LInux操作随手笔记
  18. 【leetcode 76. 最小覆盖子串】解题报告
  19. OpenCV学习笔记(一) 环境配置
  20. 【ACM】nyoj_7_街区最短路径问题_201308051737

热门文章

  1. Java练习——抽象类
  2. Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
  3. Java 面向对象 05
  4. CVE-2017-7529-Nginx越界读取缓存漏洞
  5. 对于如何从SM2的pfx证书文件中解析公钥和私钥,并从二次加密的密文中解密
  6. 从零学脚手架(五)---react、browserslist
  7. 你想知道的 std::vector::push_back 和 std::vector::emplace_back
  8. MySql历史与架构
  9. 3.DataFrame的增删改查
  10. 攻防世界 reverse Replace