#LQ0922. 版本分支

版本分支

题目描述

小明负责维护公司一个奇怪的项目。这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge)。

现在这个项目的代码一共有 NN 个版本,编号 1N1 \sim N,其中 1 号版本是最初的版本。

除了 1 号版本之外,其他版本的代码都恰好有一个直接的父版本;即这 NN 个版本形成了一棵以 1 为根的树形结构。

如下图就是一个可能的版本树:

1

/ \

2 3

\ / \

5 4 6

现在小明需要经常检查版本 xx 是不是版本 yy 的祖先版本。你能帮助小明吗?

输入描述

第一行包含两个整数 N,QN,Q,代表版本总数和查询总数。

以下 N1N - 1 行,每行包含 2 个整数 uuvv ,代表版本 uu 是版本 vv 的直接父版本。

再之后 QQ 行,每行包含 2 个整数 xxyy ,代表询问版本 xx 是不是版本 yy 的祖先版本。

其中,1N105,1Q1051≤N≤10^5,1≤Q≤10^5

输出描述

对于每个询问,输出 YESNO 代表 xx 是否是 yy 的祖先。

6 5
1 2
1 3
2 5
3 6
3 4
1 1
1 4
2 6
5 2
6 4
YES
YES
NO
NO
NO