编程题
版本分支
### 题目描述
小明负责维护公司一个奇怪的项目。这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge)。
现在这个项目的代码一共有 $N$ 个版本,编号 1 ~ $N$,其中 1 号版本是最初的版本。
除了 1 号版本之外,其他版本的代码都恰好有一个直接的父版本;即这 $N$ 个版本形成了一棵以 1 为根的树形结构。
如下图就是一个可能的版本树:
1
/ \
2 3
\ / \
5 4 6
现在小明需要经常检查版本 $x$ 是不是版本 $y$ 的祖先版本。你能帮助小明吗?
### 输入描述
第一行包含两个整数 $N, Q$,代表版本总数和查询总数。
以下 $N$ - 1 行,每行包含 2 个整数 $u$ 和 $v$ ,代表版本 $u$ 是版本 $v$ 的直接父版本。
再之后 $Q$ 行,每行包含 2 个整数 $x$ 和 $y$ ,代表询问版本 $x$ 是不是版本 $y$ 的祖先版本。
其中,$1 \leq N \leq 10^5, 1 \leq Q \leq 10^5$。
### 输出描述
对于每个询问,输出 `YES` 或 `NO` 代表 $x$ 是否是 $y$ 的祖先。
### 输入输出样例
#### 示例
> 输入
```txt
6 5
1 2
1 3
2 5
3 6
3 4
1 1
1 4
2 6
5 2
6 4
```
> 输出
```txt
YES
YES
NO
NO
NO
```