#CCFPS01D04. 树上两个点之间的距离

    ID: 1119 传统题 1000ms 256MiB 尝试: 128 已通过: 4 难度: 10 上传者: 标签>来源CCF中学生计算机程序设计(提高篇)数据结构树结构最近公共祖先

树上两个点之间的距离

【例1.4】求树上两个点之间的距离。

求树上两个点之间的距离。

距离定义为树上两个点之间唯一简单路径上边的条数。

输入格式

第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。

接下来 N1N-1 行每行包含两个正整数 x,yx, y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。

接下来 MM 行每行包含两个正整数 a,ba, b,表示询问 aa 结点和 bb 结点的距离。

输出格式

输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。

样例 #1

样例输入 #1

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

样例输出 #1

1
3
2
2
2

提示

对于 30%30\% 的数据,N10N\leq 10M10M\leq 10

对于 70%70\% 的数据,N10000N\leq 10000M10000M\leq 10000

对于 100%100\% 的数据,1N,M5000001 \leq N,M\leq 5000001x,y,a,bN1 \leq x, y,a ,b \leq N不保证 aba \neq b

样例说明:

该树结构如下:

第一次询问:2,42, 4 的最近公共祖先为4,故为 11

第二次询问:3,23, 2 的最近公共祖先4,故为 33

第三次询问:3,53, 5 的最近公共祖先1,故为 22

第四次询问:1,21, 2 的最近公共祖先4,故为 22

第五次询问:4,54, 5 的最近公共祖先4,故为 22

故输出依次为 1,3,2,2,21, 3, 2, 2, 2

来源:luogu

Limitation

2s, 1024KiB for each test case.