码迷,mamicode.com
首页 > 其他好文 > 详细

奶牛健美操

时间:2016-09-25 07:25:24      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

【题目描述】

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

奶牛健美操

标签:

原文地址:http://www.cnblogs.com/Ackermann/p/5904862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!