LCA(Lowest Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先. Tarjan是一种离线算法,时间复杂度O(n+Q),Q表示询问次数,其中使用倍增法加速算法. 首先dfs建立二叉树,并标记深度.父节点. 在LCA函数中,交换x.y保证x深度最大,计算深度差,在进行有限次计算后,保持x.y深度一致,再次进行多次倍增,寻找到最近公共祖先 最后计算节点距离差:deep[x]+deep[y]-deep[t]*2 #include<iostre…