#1168. 小A的捡芝麻计划

小A的捡芝麻计划

题目描述

又到了暑假,小A又来到西瓜地!

经过无人机的扫描,他发现今年的西瓜地形成了一棵包含 nn 个节点的树。节点编号为 1∼n1\sim n,第 ii 个节点上有一个大小为 aia_i 的西瓜。树上的 n−1n-1 条小路连接各个节点,每条小路可以双向通行。

每次询问中,小A手里抱着一个大小为 zz 的西瓜,沿树上从节点 xx 到节点 yy 的简单路径行走。保证 yy 在 xx 到节点 11 的路径上,允许 x=yx=y。

小A会依次比较路径上每个节点的西瓜,起点 xx 和终点 yy 也要比较。如果当前节点的西瓜严格大于手中的西瓜,他就扔下手中的西瓜,换成当前节点的西瓜;大小相等时不替换。

请回答每次询问中,小A一共替换多少次西瓜。每次询问相互独立,均使用给定的初始大小 zz 和原始节点大小 aia_i。

输入格式

从文件 sesame.in 中读入数据。

第一行包含一个整数 nn,表示节点数量。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n,表示各节点的西瓜大小。

接下来 n−1n-1 行,每行包含两个整数 u,vu,v,表示节点 uu 与节点 vv 之间有一条小路。保证这些小路构成一棵树。

接下来一行包含一个整数 TT,表示询问数量。

接下来 TT 行,每行包含三个整数 x,y,zx,y,z,含义如题目描述所述。

输出格式

输出到文件 sesame.out 中。

输出 TT 行,每行一个整数,表示对应询问中的替换次数。

样例1

样例输入1

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

样例输出1

2
1
1
0

样例解释1

第一条询问依次比较节点 4,24,2 上大小为 2,52,5 的西瓜。初始大小为 11,因此两次都替换。

第二条询问的初始大小为 22,在节点 44 不替换,在节点 22 替换一次。第三条询问也只在节点 22 替换。

第四条询问经过的节点依次为 5,3,15,3,1,对应大小为 4,1,34,1,3,都不超过初始大小 55,因此答案为 00。

样例 2

见选手目录下的 sesame/sesame2.in 与 sesame/sesame2.ans。

该组样例满足 n,T≤5000n,T\le5000。

样例 3

见选手目录下的 sesame/sesame3.in 与 sesame/sesame3.ans。

该组样例满足 n,T≤50000n,T\le50000。

数据范围

对于所有测试点,保证 2≤n,T≤1000002\le n,T\le100000,0≤ai≤1000000\le a_i\le100000,1≤z≤1000001\le z\le100000,1≤u,v,x,y≤n1\le u,v,x,y\le n。保证输入是一棵树,且 yy 在 xx 到节点 11 的路径上。

各测试点的额外规模限制如下。

测试点编号 n,Tn,T 的上限
1∼41\sim4 100100
5∼105\sim10 50005000
11∼1411\sim14 5000050000
15∼2015\sim20 100000100000

统计

相关

在下列比赛中:

第五套