#P1083. 【模板】最近公共祖先(倍增 LCA)

    ID: 95 传统题 1000ms 256MiB 尝试: 10 已通过: 1通过率: 10%难度: 普及 ← 上一题 下一题 → 随机一题 上传者: 标签 模板题 最近公共祖先 LCA 树上倍增 深度优先搜索 DFS
显示设置

【模板】最近公共祖先(倍增 LCA)

题目描述

给定一棵 nn 个结点的无根树,结点编号 1∼n1\sim n。我们把它当成以 11 号结点为根的有根树。

接下来有 qq 次询问,每次给出两个结点 u,vu,v,请求出它们的最近公共祖先(即 uu 到根的路径与 vv 到根的路径的第一个交点)。

输入格式

第一行两个整数 n,qn,q。

接下来 n−1n-1 行,每行两个整数 u,vu,v,表示结点 uu 与结点 vv 之间有一条边,保证这些边构成一棵树。

接下来 qq 行,每行两个整数 u,vu,v,表示一次询问。

输出格式

共 qq 行,第 ii 行一个整数,表示第 ii 次询问的最近公共祖先编号。

输入输出样例 #1

输入 #1

5 4
1 2
1 3
2 4
2 5
4 5
4 3
2 2
5 1

输出 #1

2
1
2
1

说明

数据范围

  • 对于 100%100\% 的数据,1≤n,q≤2×1051\le n,q\le 2\times 10^5。