题目链接 https://loj.ac/problem/6669 题解 Orz yyf太神了,出这种又有意思又有意义的好题造福人类-- 首先\(n\)次询问求出所有节点的深度. 考虑按深度扩展(BFS), 同时维护重链剖分 每次扩展一个点时,从根节点所在重链开始,每次询问当前节点与链底节点的距离,这样就可以算出它们LCA的深度,也就是当前节点到根的路径上与这条重链相交部分的最大深度.那么如果这个最大深度等于当前深度\(-1\), 就得到了该点的父亲:否则跳到LCA的轻儿子所在重链上,继续询问即可…