#L3661. 「2021 集训队互测」蜘蛛爬树

    ID: 5534 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>树结构树链剖分数据结构线段树生成树树上最近公共祖先

「2021 集训队互测」蜘蛛爬树

题目描述

小 F 在自家院子里种了一棵 nn 个节点的树。节点编号为 11nn。有 n1n-1 条边将这些节点连接起来,第 ii 条边连接节点 uiu_i 与节点 viv_i,长度为 wiw_i

接下来的几天中,小 F 将这棵树复制了 m1m-1 份并排成一排,于是他拥有了 mm 棵完全相同的树。第 kk 棵树节点 xx 的编号为 (k1)×n+x(k-1)\times n+x。为方便叙述,下面用二元组 (k,x)(k,x) 表示编号为 (k1)×n+x(k-1)\times n+x 的节点。

小 F 的院子里有 qq 只蜘蛛。这些蜘蛛会对于任意 1k<m,1xn1\le k < m,1\le x\le n,用一条蛛丝将 (k,x)(k,x)(k+1,x)(k+1,x) 连接起来。

由于每个节点的高度和脆弱程度不同,这些蛛丝之间可能会有长短。但是由于这些树完全相同,且相邻树之间的距离相同,所以对于任意 1k1,k2<m,1xn1\le k_1,k_2 < m,1\le x\le n,连接 (k1,x)(k_1,x)(k1+1,x)(k_1+1,x) 的蛛丝长度等于连接 (k2,x)(k_2,x)(k2+1,x)(k_2+1,x) 的蛛丝长度。

于是我们可以用一个序列 a1,a2,,ana_1,a_2,\ldots,a_n 来描述这些蛛丝,其中 axa_x 表示对于任意 1k<m1\le k < m,连接 (k,x)(k,x)(k+1,x)(k+1,x) 的蛛丝长度。

为了检验成果,蜘蛛们展开了一场爬树比赛。第 jj 只蜘蛛要从节点 sjs_j 沿树边和蛛丝爬到节点 tjt_j

你需要帮蜘蛛们算一算,每只蜘蛛的最短路径长度。

输入格式

第一行三个整数 n,m,qn,m,q,分别表示每棵树的节点树、树的数量和蜘蛛数量。

第二行 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,描述蛛丝长度。

接下来 n1n-1 行,第 ii 行三个整数 ui,vi,wiu_i,v_i,w_i,描述第 ii 条边。

接下来 qq 行,第 jj 行两个整数 sj,tjs_j,t_j,表示第 jj 只蜘蛛的起点和终点。

输出格式

输出 qq 行,第 jj 行一个整数,表示第 jj 只蜘蛛的最短路径长度。

样例

输入

4 3 2
4 3 3 5
1 2 2
2 4 1
3 2 4
12 3
7 9

输出

11
9

33 棵树与蛛丝形成的结构如下(黑线表示树边,蓝线表示蛛丝):

(此处应有图示)

数据范围与提示

子任务 1(3 分):n100,m100,q1000n\le 100,m\le 100,q\le 1000
子任务 2(5 分):n,q5000n,q\le 5000
子任务 3(11 分):m20m\le 20
子任务 4(12 分):树是一条链
子任务 5(9 分):树是一个菊花
子任务 6(22 分):sj=1s_j=1
子任务 7(18 分):n,q5×104n,q\le 5\times 10^4
子任务 8(20 分):无附加限制

对于 100%100\% 的数据:

  • 1n,q2×1051\le n,q\le 2\times 10^5
  • 1m1091\le m\le 10^9
  • 1ax1091\le a_x\le 10^9
  • 1wi10121\le w_i\le 10^{12}
  • 1ui,vin1\le u_i,v_i\le n
  • 1sj,tjn×m1\le s_j,t_j\le n\times m