编程题
版本分支 ### 题目描述 小明负责维护公司一个奇怪的项目。这个项目的代码一直在不断分支(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 ```
查看答案
赣ICP备20007335号-2