输入样例:
5
2 4 1 3 0
8
2 is the root
1 and 4 are siblings
3 and 0 are on the same level
2 is the parent of 4
3 is the left child of 4
1 is the right child of 2
4 and 0 are on the same level
100 is the right child of 3
输出样例:
Yes
Yes
Yes
Yes
Yes
No
No
No
题解 : 写的代码极丑。
先离散化,建树的时候储存下来这个节点对应到数组上的下标,a[id[i]]=x,i是x的映射。上次有一个题目也是这样的查询,但是那个是通过每次把所有的点for循环直至a[i]=x,找到对应的数组下标,时间复杂度较高。
下面的代码是错误的,最后一个测试点MLE。
#include<cstdio>
#include<map>
using namespace std;
const int N=100+5,M=N*N*1000,INF=0x3f3f3f3f;
map<int,int>refl;
int root,k[N]