题目描述
输入格式
输出格式
样例
是不是很久没粘题面了。
一道树上直径的好题。
首先我们要找出直径,因为直径的中点一定距其他点的最大值最小,
设直径的长度为d,假设有其他点到中点距离大于d/2,那么肯定会形成新的直径和端点
那么我们可以考虑当取出直径的一段时,离直径最长的点会是什么点
发现,要么是直径的两端点,要么是非直径点,因为非直径点是一定的,我们可以预处理出,
剩下的我们只需要用单调队列找出覆盖在直径上的小于s的路径就好了。
是不是很久没粘题面了。
一道树上直径的好题。
首先我们要找出直径,因为直径的中点一定距其他点的最大值最小,
设直径的长度为d,假设有其他点到中点距离大于d/2,那么肯定会形成新的直径和端点
那么我们可以考虑当取出直径的一段时,离直径最长的点会是什么点
发现,要么是直径的两端点,要么是非直径点,因为非直径点是一定的,我们可以预处理出,
剩下的我们只需要用单调队列找出覆盖在直径上的小于s的路径就好了。