3605: [CSP-S 2022] 数据传输transmit.cpp
内存限制:1024 MB
时间限制:3.000 S
评测方式:文本比较
命题人:
提交:1
解决:0
题目描述
题目描述
小 C 正在设计计算机网络中的路由系统。
测试用的网络总共有 nnn 台主机,依次编号为 1∼n1 \sim n1∼n。这 nnn 台主机之间由 n−1n - 1n−1 根网线连接,第 iii 条网线连接个主机 aia_iai 和 bib_ibi。保证任意两台主机可以通过有限根网线直接或者间接地相连。受制于信息发送的功率,主机 aaa 能够直接将信息传输给主机 bbb 当且仅当两个主机在可以通过不超过 kkk 根网线直接或者间接的相连。
在计算机网络中,数据的传输往往需要通过若干次转发。假定小 C 需要将数据从主机 aaa 传输到主机 bbb(a≠ba \neq ba=b),则其会选择出若干台用于传输的主机 c1=a,c2,…,cm−1,cm=bc_1 = a, c_2, \ldots, c_{m - 1}, c_m = bc1=a,c2,…,cm−1,cm=b,并按照如下规则转发:对于所有的 1≤i<m1 \le i < m1≤i<m,主机 cic_ici 将信息直接发送给 ci+1c_{i + 1}ci+1。
每台主机处理信息都需要一定的时间,第 iii 台主机处理信息需要 viv_ivi 单位的时间。数据在网络中的传输非常迅速,因此传输的时间可以忽略不计。据此,上述传输过程花费的时间为 ∑i=1mvci\sum_{i = 1}^{m} v_{c_i}∑i=1mvci。
现在总共有 qqq 次数据发送请求,第 iii 次请求会从主机 sis_isi 发送数据到主机 tit_iti。小 C 想要知道,对于每一次请求至少需要花费多少单位时间才能完成传输。
测试用的网络总共有 nnn 台主机,依次编号为 1∼n1 \sim n1∼n。这 nnn 台主机之间由 n−1n - 1n−1 根网线连接,第 iii 条网线连接个主机 aia_iai 和 bib_ibi。保证任意两台主机可以通过有限根网线直接或者间接地相连。受制于信息发送的功率,主机 aaa 能够直接将信息传输给主机 bbb 当且仅当两个主机在可以通过不超过 kkk 根网线直接或者间接的相连。
在计算机网络中,数据的传输往往需要通过若干次转发。假定小 C 需要将数据从主机 aaa 传输到主机 bbb(a≠ba \neq ba=b),则其会选择出若干台用于传输的主机 c1=a,c2,…,cm−1,cm=bc_1 = a, c_2, \ldots, c_{m - 1}, c_m = bc1=a,c2,…,cm−1,cm=b,并按照如下规则转发:对于所有的 1≤i<m1 \le i < m1≤i<m,主机 cic_ici 将信息直接发送给 ci+1c_{i + 1}ci+1。
每台主机处理信息都需要一定的时间,第 iii 台主机处理信息需要 viv_ivi 单位的时间。数据在网络中的传输非常迅速,因此传输的时间可以忽略不计。据此,上述传输过程花费的时间为 ∑i=1mvci\sum_{i = 1}^{m} v_{c_i}∑i=1mvci。
现在总共有 qqq 次数据发送请求,第 iii 次请求会从主机 sis_isi 发送数据到主机 tit_iti。小 C 想要知道,对于每一次请求至少需要花费多少单位时间才能完成传输。
输入
输入描述
从文件 transmit.in 中读入数据。
输入的第一行包含三个正整数 n,Q,kn, Q, kn,Q,k,分别表示网络主机个数,请求个数,传输参数。数据保证 1≤n≤2×1051 \le n \le 2 \times {10}^51≤n≤2×105,1≤Q≤2×1051 \le Q \le 2 \times {10}^51≤Q≤2×105,1≤k≤31 \le k \le 31≤k≤3。
输入的第二行包含 nnn 个正整数,第 iii 个正整数表示 viv_ivi,保证 1≤vi≤1091 \le v_i \le {10}^91≤vi≤109。
接下来 n−1n - 1n−1 行,第 iii 行包含两个正整数 ai,bia_i, b_iai,bi,表示一条连接主机 ai,bia_i, b_iai,bi 的网线。保证 1≤ai,bi≤n1 \le a_i, b_i \le n1≤ai,bi≤n。
接下来 QQQ 行,第 iii 行包含两个正整数 si,tis_i, t_isi,ti,表示一次从主机 sis_isi 发送数据到主机 tit_iti 的请求。保证 1≤si,ti≤n1 \le s_i, t_i \le n1≤si,ti≤n,si≠tis_i \ne t_isi=ti。
输入的第一行包含三个正整数 n,Q,kn, Q, kn,Q,k,分别表示网络主机个数,请求个数,传输参数。数据保证 1≤n≤2×1051 \le n \le 2 \times {10}^51≤n≤2×105,1≤Q≤2×1051 \le Q \le 2 \times {10}^51≤Q≤2×105,1≤k≤31 \le k \le 31≤k≤3。
输入的第二行包含 nnn 个正整数,第 iii 个正整数表示 viv_ivi,保证 1≤vi≤1091 \le v_i \le {10}^91≤vi≤109。
接下来 n−1n - 1n−1 行,第 iii 行包含两个正整数 ai,bia_i, b_iai,bi,表示一条连接主机 ai,bia_i, b_iai,bi 的网线。保证 1≤ai,bi≤n1 \le a_i, b_i \le n1≤ai,bi≤n。
接下来 QQQ 行,第 iii 行包含两个正整数 si,tis_i, t_isi,ti,表示一次从主机 sis_isi 发送数据到主机 tit_iti 的请求。保证 1≤si,ti≤n1 \le s_i, t_i \le n1≤si,ti≤n,si≠tis_i \ne t_isi=ti。
输出
输出描述
输出到文件 transmit.out 中。
QQQ 行,每行一个正整数,表示第 iii 次请求在传输的时候至少需要花费多少单位的时间。
QQQ 行,每行一个正整数,表示第 iii 次请求在传输的时候至少需要花费多少单位的时间。
样例输入 复制
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
提示
【样例解释 #1】
对于第一组请求,由于主机 4, 74,7 之间需要至少 44 根网线才能连接,因此数据无法在两台主机之间直接传输,其至少需要一次转发;我们让其在主机 11 进行一次转发,不难发现主机 11 和主机 4, 74,7 之间都只需要两根网线即可连接,且主机 11 的数据处理时间仅为 11,为所有主机中最小,因此最少传输的时间为 4 + 1 + 7 = 124+1+7=12。
对于第三组请求,由于主机 1, 21,2 之间只需要 11 根网线就能连接,因此数据直接传输就是最优解,最少传输的时间为 1 + 2 = 31+2=3。