#ABC477G. 树上的频率询问 / Frequency Query on Tree

树上的频率询问 / Frequency Query on Tree

题目描述

给定一棵有 NN 个顶点的树,顶点编号为 11 到 NN。第 ii 条边连接顶点 uiu_i 与顶点 viv_i。此外,顶点 ii 上写着整数 xix_i。

请处理 QQ 个询问。每个询问给出整数 s,t,a,bs,t,a,b,求满足以下条件的整数 yy 的个数。

  • 设 ff 为「连接顶点 ss 与顶点 tt 的路径上的顶点中,写着整数 yy 的顶点个数」。此时 a≤f≤ba \leq f \leq b 成立。

输入格式

输入按以下格式从标准输入读入:

  • NN QQ
  • x1x_1 x2x_2 …\ldots xNx_N
  • u1u_1 v1v_1
  • u2u_2 v2v_2
  • ⋮\vdots
  • uN−1u_{N-1} vN−1v_{N-1}
  • query1\mathrm{query}_1
  • query2\mathrm{query}_2
  • ⋮\vdots
  • queryQ\mathrm{query}_Q

每个询问 queryq\mathrm{query}_q 按以下格式给出:

  • ss tt aa bb

输出格式

输出 QQ 行。第 qq 行是第 qq 个询问的答案。

5 4
1 2 3 1 2
1 2
2 3
3 4
4 5
1 5 1 2
1 4 2 3
3 5 1 1
2 4 2 5
3
1
3
0

考虑第 1 个询问。连接顶点 11 与顶点 55 的路径上的顶点依次为顶点 11、顶点 22、顶点 33、顶点 44、顶点 55。写在这些顶点上的整数依次为 1,2,3,1,21, 2, 3, 1, 2。因此,满足条件的整数 yy 共有三个:1,2,31,2,3。

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

数据范围

  • 2≤N≤2×1052 \leq N \leq 2 \times 10^5

  • 1≤Q≤2×1051 \leq Q \leq 2 \times 10^5

  • 1≤ui<vi≤N1 \leq u_i \lt v_i \leq N

  • 给定的图是一棵树。

  • 1≤xi≤N1 \leq x_i \leq N

  • 1≤s<t≤N1 \leq s \lt t \leq N

  • 1≤a≤b≤N1 \leq a \leq b \leq N

  • 所有输入值均为整数。

  • 来源:AtCoder ABC 477 G

子任务设置

  • 子任务 1(30 分):N,Q≤2000N, Q \le 2000。
  • 子任务 2(30 分):树是一条链(ui=iu_i = i,vi=i+1v_i = i + 1),且 N,Q≤2×105N, Q \le 2 \times 10^5。
  • 子任务 3(40 分):无特殊限制。