不是哥们

· · 题解

找到的蓝色点集合的直径的中点(点或边的中间),那么贡献就是红色点到中点的最长距离加上直径的一半即为答案。

考虑去枚举中点,那么只需要满足有至少两个子树内的最长距离为全局到这个点的最长距离。

按深度从大到小 dp 即可,具体状态转移可以看代码(较为清晰)

https://codeforces.com/contest/2101/submission/319451580