对于给定的一棵树,其直径的长度是多少,以及有多少条边满足所有的直径都经过该边. Solution 有点意思 先随便求一条直径(两次DFS即可),不妨设为 \(s,t\),我们知道要求的这些边一定都在这条路径上,不妨将它看作一条线(用DFS + STACK把它提取出来),其中 \(s\) 叫左边, \(t\) 叫右边 我们现在就要在这条线上借出一段区间 考虑如何求它的右端点,以 \(s\) 为根跑 DFS,算出每个点子树的最长路径以及条数 从 \(t\) 往左扫,如果碰到某条边不是必须经过的边(可…