显然不弱于 bzoj2125 最短路。
先建出圆方树,圆方边按 bzoj2125 的方法建出来,这样两个圆点的最短路可以按 LCA 直接分类计算。
然后单组询问的时候,由于总点数被限制了,不难想到建立虚树。
建出虚树后在虚树上直接换根 dp 即可找出从每个子树到当前点的最长路,总复杂度 O(nlogn)O(n\log n)O(nlogn),可以通过。
注意方点换根时需要一个单调队列。
参考代码。
注册一个 BZOJ by HydroOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 HydroOJ 通用账户