【tree】

【问题描述】

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

【输入格式】

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

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

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

接下来m行,每行两个正整数x和y。

【输出格式】

对于每一个询问,输出1如果x是y的祖先,输出2如果y是x的祖先,否则输出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

【样例说明】

234是233的祖先,19是233的祖先。

【数据范围】

对30%的输入数据:n,m≤1000

对100%的输入数据:n,m≤40000,每个节点的编号都不超过40000

LCA裸题啊……建边每次在线倍增法求LCA即可。

下面是代码:

 

stdKonjac

stdKonjac

一只挣扎的蒟蒻ACMer

评论太激烈有些评论需要亲动动手指翻页

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

*