直径
法一:先求出一条直径,显然只有这条直径上的边才可能是答案
我们考虑最终答案怎么来的,我们把树看成这个样子
其中中间红色的是我们找出来的直径
那么其他直径只有可能是从分支开始走,然后到红色线上面走一段,最后再走到另一分支上(注意直径的端点都是叶子节点)
我们把所有直径都画出来,每次都取交集,然后就可以发现最终的答案一定是连续的一段
于是我们就枚举寻找左右端点,可看这篇题解,写的比较清楚
法二:
对一条边
法三:这篇题解,看不懂
update 2024.5.26
其实法一利用“树网的核”的结论很容易做。把中点画出来,树就长成这个样子了
所以左右两边的离中点最近的拐点之间的边就是必经边了
如何找出拐点?随便选一条直径,然后像“树网的核”一样,求出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构