7232 - 数据传输

通过次数

13

提交次数

65

时间限制 : 3 秒
内存限制 : 1024 MB

小C正在设计计算机网络中的路由系统。

测试用的网络总共有n台主机,依次编号为1∼n。这n台主机之间由n−1根网线连接,第i条网线连接个主机aia_{i}bib_{i}。保证任意两台主机可以通过有限根网线直接或者间接地相连。受制于信息发送的功率,主机a能够直接将信息传输给主机b当且仅当两个主机在可以通过不超过k根网线直接或者间接的相连。

在计算机网络中,数据的传输往往需要通过若干次转发。假定小C需要将数据从主机a传输到主机b(a≠b),则其会选择出若干台用于传输的主机c1c_{1}=a,c2c_{2},…,cm1c_{m-1},cmc_{m}=b,并按照如下规则转发:对于所有的1≤i<m,主机cic_{i}将信息直接发送给ci+1c_{i+1}

每台主机处理信息都需要一定的时间,第i台主机处理信息需要viv_{i}单位的时间。数据在网络中的传输非常迅速,因此传输的时间可以忽略不计。据此,上述传输过程花费的时间为 16777592671758.png

现在总共有q次数据发送请求,第i次请求会从主机sis_{i}发送数据到主机tit_{i}。小C想要知道,对于每一次请求至少需要花费多少单位时间才能完成传输。

输入

输入的第一行包含三个正整数 n,Q,k,分别表示网络主机个数,请求个数,传输参数。数据保证 1≤n≤2×10510^5,1≤Q≤2×10510^5,1≤k≤3。
输入的第二行包含 n 个正整数,第 i 个正整数表示viv_i ,保证 1≤viv_i10910^9
接下来 n−1 行,第 i 行包含两个正整数aia_ibib_i,表示一条连接主机aia_ibib_i的网线。保证 1≤aia_ibib_i≤n。
接下来 Q 行,第 i 行包含两个正整数sis_itit_i,表示一次从主机sis_i发送数据到主机tit_i的请求。保证1≤si,tis_{i},t_{i}≤n,sis_itit_i

输出

Q行,每行一个正整数,表示第i次请求在传输的时候至少需要花费多少单位的时间。

样例

输入
复制

7 3 3
1 2 3 4 5 6 7
1 2
1 3
2 4
2 5
3 6
3 7
4 7
5 6
1 2

输出
复制

12
12
3

提示

对于第一组请求,由于主机4,7之间需要至少4根网线才能连接,因此数据无法在两台主机之间直接传输,其至少需要一次转发;我们让其在主机1进行一次转发,不难发现主机1和主机4,7之间都只需要两根网线即可连接,且主机1的数据处理时间仅为1,为所有主机中最小,因此最少传输的时间为4+1+7=12。

对于第三组请求,由于主机1,2之间只需要1根网线就能连接,因此数据直接传输就是最优解,最少传输的时间为1+2=3。

对于所有的测试数据,满1≤n≤2*10510^5,1≤Q≤2*10510^5,1≤k≤3,1≤ai,bia_{i},b_{i}≤n,1≤si,tis_{i},t_{i}≤n,sis_itit_i

16777600368534.png

特殊性质:保证aia_i=i+1,而bib_i则从1,2,…,i中等概率选取。

来源

CSP