题目描述
在这个问题中你需要帮助伯兰(??我没找到有Berland这个国家)军队组织他们的指挥系统
伯兰军队中一共有n个军官。第一个官员是军队的指挥官,他并没有任何上级。其他的军官都有且只有一个直接的上级。如果一个军官a是军官b的上级,那么你也可以说军官b就是军官a的下属
如果满足下列条件,那么军官x就是军官y的下属(直接或非直接):
1.y是x的直接上级 2.x的直接上级是y的下属
举个例子,下图的官员3的下属有:5,6,7,8,9
所以,在伯兰军队的结构中,除了指挥官,其他人都是指挥官的下属
形式上的,让我们把伯兰军队看成一棵拥有n个节点的树,树的节点u就代表了军官u。根(即一号节点)就相当于指挥官
伯兰战争部门命令你对q个查询给出答案。这q个查询会以(ui,ki)的形式给出,ui代表了某个军官,ki是正整数。你需要输出,编号为ui的军官下达命令后,第ki个得知此命令的军官编号是多少,如果传达人数不足ki个,输出-1。
要处理第i个查询,想象一下ui的命令如何我下达到ui的下属。这里使用了典型的DFS(深度优先搜索)算法。
假设现在的军官是a,他要下达一个命令。a军官选择一个军官b——还没有收到这个命令的直接下属(即在树上的一个孩子)。如果有许多这样的直接下属,那么A选择编号最小的那一个。A军官向B军官发出命令。之后,B使用完全相同的方式将命令扩展到它的子树。在B完成命令后,军官A再次选择下一个直接下属(使用相同的策略)。当军官A不能选择任何还没有接到命令的直接下属时,军官A下达命令完成。
让我们看一下下面这个例子(看下面的图):
如果军官1下达了命令,军官们收到命令的顺序是:1,2,3,5,6,8,7,9,4
如果军官3下达了命令,军官们收到命令的顺序是:3,5,6,8,7,9
如果军官7下达了命令,军官们收到命令的顺序是:7,9
如果军官9下达了命令,军官们收到命令的顺序是:9
你应当分开处理这些查询。一个查询不会影响其他查询的结果。
输入格式
第一行包括两个整