在一个遥远的神秘森林里,生长着一棵古老的智慧之树。
这棵树有 n 个节点,每个节点代 表着一位拥有特殊能力的精灵,节点的权值 xi 则代表了每位精灵的魔力值。
假设我们认为这是一棵有根树,树上的根节点是 1 号节点。
传说中,这棵智慧之树能够回答任何问题,但只有森林中的守护者才能解读这些答案。
某 天,一位年轻的学者来到森林,怀揣着无尽的好奇心。
他向智慧之树提出了 Q 个问题,每个问 题都涉及到某个精灵及其子孙后代的魔力值。
具体来说,对于每个问题,智慧之树会给出一个精灵 v 和一个数字 k。
学者需要找出以 v 为根的子树中,第 k 大的魔力值。
这些问题对学者来说并不容易,于是他请求森林守护者的帮助。你作为守护者的助手,需 要帮助学者解答这些问题。
第一行两个正整数 n 和 Q 表述该树有 n 个节点,以及学者会进行 Q 次提问。
接下来一行 n 个整数其中 xi 表示节点 i 上精灵的魔力值。
再接下来 n − 1 行每行两个整数 x, y 表示树上链接节点 x 和 y 的一条边。
再接下来 Q 行每行两个整数 v, k, 表示学者的每次提问。
输出一共 Q 行,每行表示对学者的一个回答。如果以 v 为根的子树大小不足 k, 则输出−1。
5 2 1 2 3 4 5 1 4 2 1 2 5 3 2 1 2 2 1
4 5
6 2 10 10 10 9 8 8 1 4 2 1 2 5 3 2 6 4 1 4 2 2
9 10
20% 的数据满足,n, Q ≤ 1000
另有 30% 的数据满足,每次询问 k = 1 对于
100% 的数据满足,1 ≤ n, Q ≤ 105 , 1 ≤ x, y, v ≤ n, 1 ≤ k ≤ 20
时间限制 | 1 秒 |
内存限制 | 512 MB |