最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 祖孙询问

C++ 少儿编程 1040浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

已知一棵 $n$ 个节点的有根树。有 $m$ 个询问,每个询问给出了一对节点的编号 $x$ 和 $y$,询问 $x$ 与 $y$ 的祖孙关系。

【输入】

输入第一行包括一个整数 $n$ 表示节点个数;

接下来 $n$ 行每行一对整数对 $a$ 和 $b$ 表示 $a$ 和 $b$ 之间有连边。如果 $b$ 是 $-1$,那么 $a$ 就是树的根;

第 $n+2$ 行是一个整数 $m$ 表示询问个数;

接下来 $m$ 行,每行两个正整数 $x$ 和 $y$,表示一个询问。

【输出】

对于每一个询问,若 $x$ 是 $y$ 的祖先则输出 $1$,若 $y$ 是 $x$ 的祖先则输出 $2$,否则输出 $0$。

【输入样例】

10
234 -1
12 234
13 234
14 234
15 234
16 234
17 234
18 234
19 234
233 19
5
234 233
233 12
233 13
233 15
233 19

【输出样例】

1
0
0
0
2

【提示】

数据范围与提示:

对于 30% 的数据,$1≤n,m≤10^3$ ;

对于 100% 的数据,$1≤n,m≤4×10^4$ ,每个节点的编号都不超过 $4×10^4$ 。

您必须 登录 才能发表评论!