套路的找环 + 单调队列。
对环上每个点找到其所链的子树上最远的点。
环上每个点的正对面再加辅助点。
则任意两个环上相邻点之间的“到某特定点最远距离”决策不会出现不单调的情况。
因此,对在环上的边,只用考虑其左边的点所对应的左边一半最远距离、右边的点对应的右边一半最远距离。
对于在子树上的边,改造成树暴力找直径即可。
即,临时断掉环边,把从环上点从环上左、右到达的最远点的距离由临时点向其连边,暴力跑树的直径即可。
做完这题还可以去练习一下 【UNR #6】面基之路。
注册一个 BZOJ by HydroOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 HydroOJ 通用账户