zoukankan      html  css  js  c++  java
  • 奶牛健美操

    【题目描述】

    农夫让奶牛们在牧场之间奔跑以保持健康。这些牧场的布局是一棵树,且每条边等长度都为1。

    对于给定的一个路径集合,精明的奶牛们会计算出任意点对路径的最大值,我们称之为这个路径集合的直径。

    农夫把每个点标记为1~V(2 <= V <= 100000)。为了获得更加短的直径,他可以选择封锁一些已经存在的道路,这样就可以得到更多的路径集合,从而减小一些路径集合的直径。

    我们从一棵树开始,农夫可以选择封锁S(1 <= S < V)条双向路,从而获得S+1个路径集合。现要求计算出最佳的封锁方案,使得他得到的所有路径集合直径的最大值尽可能小。

    农夫会告诉你所有的(V-1条)双向道路,每条道路表述为:顶点Ai(1 <= Ai <= V)和Bi(1 <= Bi <= V,Ai ≠ Bi)连接。

    我们来看看如下的例子:

    线性的路径集合(7个顶点的树)

    1

     

      2

      

         3

         

           4

           

             5

              

                6

               

                  7

    如果农夫可以封锁两条道路,他可能的选择如下:

    1

     

      2

       X

         3

         

           4

            X

             5

              

               6

               

                 7

    这样最长的直径是2,即是最优答案(当然,不是唯一的)。

    【输入描述】

    第1行输入两个整数V和S;

    第2~V行,每行输入两个整数Ai和Bi

    【输出描述】

    输出一个整数,表示农夫可以获得的最大直径。

    【样例输入】

    7 2

    6 7

    3 4

    6 5

    1 2

    3 2

    4 5

    【样例输出】

    2

    【数据范围及提示】

    对于50%的数据,V <= 100;

    对于100%的数据,V <= 100000。

  • 相关阅读:
    图片水平垂直居中 多行文字垂直居中
    ie8支持rgba方法
    html5学习(1)
    青岛鲁银商品交易中心
    PHP 生成16 uuid
    探索区块链-挖框体验
    微信小游戏-微信提供了啥
    error: libXpm.(a|so)
    从0到9取4位不同数字的排列组合算法
    visual studio 2015 rc &cordova -hello world
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5904862.html
Copyright © 2011-2022 走看看