Description
Farmer John 的农场由 N 块草地(1≤N≤10^5)和 N−1 条道路组成,满足每块草地都能从任意其他草地到达。也就是说,这个农场组成一棵树。但在与不可避免地由树而生的麻烦的算法问题打了 28 年交道之后,FJ 终于认为树形的农场太复杂了。他相信在链上的算法问题更简单。
所以,他的计划是将这些道路划分成若干条链,并将每条链交给他值得信任的农场工人之一负责。他不关心链的数量。然而,他希望确保这些链都尽可能长,从而不会有农场工人能够用一个渐近效率低下的算法蒙混过关!
帮助 Farmer John 求出最大正整数 K,使得道路可以被划分为一些长度至少为 K 的链。
测试点性质:
在测试点 2-4 中树组成了一个 “星形”;至多一个结点的度大于二。
测试点 5-8 满足 N≤10^3。
测试点 9-15 没有额外限制。
Input
第一行包含一个整数 N。
以下 N−1 行每行包含两个空格分隔的整数 a 和 b,表示结点 a 与 b 之间有一条边。a 和 b 均在范围 1…N 内。
Output
输出 K。
Sample Input
8 1 2 1 3 1 4 4 5 1 6 6 7 7 8
Sample Output
3 一种可能的划分方式如下: 2−1−6−7−8,3−1−4−5
Solutoin
贪心+二分。
首先二分答案。
设f[i]表示以i为根的子树内,链的长度都大于等于当前mid(即子树内满足题意),从i开始往下延伸的最长的链的长度。
但是并不保证i一定要有值,