#P16691. 怅惘 Plus

    ID: 18686 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>O2优化树链剖分哈希 hashing虚树线段树合并

怅惘 Plus

背景

我该如何迎接希望?我问我自己。

he- he- hello sunshine

bye bye say bye to the night

——洛天依《hello&bye,days》

题目描述

小 Z 得到了一棵树!

这棵树共有 NN 个结点,编号为 1,2,…,N1,2,\dots,N,以 11 号结点为根。根的深度是 11,每一个结点的深度定义为该节点到 11 号根节点的简单路径上的边数加 11。对于 1≤i≤N1 \le i \le N,ii 号节点有一个权值 AiA_i。令 DD 为树的深度。

定义 F(num1,num2)F(num_1,num_2) 为 num1num_1 号结点对应的子树中深度为 num2num_2 的结点权值的可重集合。

需要注意的是,这里深度的定义如第一段所描述,指的是以节点 11 为根的深度,而非以节点 num1num_1 为根。

特别地,若不存在 num1num_1 号结点对应的子树中不存在深度 num2num_2,则 F(num1,num2)=∅F(num_1,num_2)=\emptyset。

小 Z 会对你进行 QQ 次询问,每次询问给定两个正整数 xx 和 dd,你需要计算有多少组 (a,b)(a,b) 满足以下条件:

  • 1≤a≤N1 \le a \le N,1≤b≤D1 \le b \le D;
  • (a,b)≠(x,d)(a,b) \neq (x,d);
  • F(x,d)=F(a,b)F(x,d)=F(a,b)。

输入格式

第一行包含两个正整数 NN 和 QQ,分别表示树上结点的数量和询问的次数。

第二行包含 NN 个非负整数 AiA_i,表示每个结点的权值。

接下来 N−1N-1 行,每行两个正整数 uu 和 vv,表示 uu 号结点和 vv 号结点之间存在一条边。

接下来 QQ 行,每行两个正整数 xx 和 dd,表示询问的内容,含义见题目描述。

输出格式

对于每次询问,包含一行一个非负整数,表示答案。

8 5
1 2 1 2 4 3 3 4
1 2
1 3
1 4
3 5
3 6
4 7
4 8
3 3
1 2
4 3
1 1
2 1
1
0
1
1
11

提示

对于 100%100\% 的数据,保证 1≤N,Q≤1051 \le N,Q \le 10^5,1≤Ai≤1051 \le A_i \le 10^5,1≤u,v≤N1 \le u,v \le N,1≤u≤N1 \le u \le N,1≤d≤D1 \le d \le D。