P1028灵舵渡千屿(helm)

时间限制 1500 ms内存限制 512 MiB通过率 —
显示算法标签最短路 · 分层图

【题目背景】

在晨汐港备齐远航所需的物资后,Gioush 大队再度驶入特西荼亚海。暮色中的金白鱼群将众人引向岛屿密布的海域,Ehundategh 于是让 tfbz 接管船上的灵舵,带领船队穿过千屿之间的水道。

【题目描述】

特西荼亚海中共有 nn 座岛屿,岛屿之间共有 mm 条单向航道,每条航道都有一定的航行费用。为了让掌舵者能够在交错的水道间迅速作出选择,Ehundategh 预先为每座岛屿的所有出航航道规定了固定次序:若从岛屿 xx 出发的航道共有 dxd_x 条,则它们依次编号为 1∼dx1\sim d_x。

船上的灵舵档位用整数 pp 表示,其上限为 kk。启航时,tfbz 将灵舵档位设为 11。在航行途中的任意时刻,他都可以按照以下方式调整灵舵档位:

  • 若 p<kp<k,则可以花费 vpv_p 的费用,使 p←p+1p\leftarrow p+1;
  • 若 p>1p>1,则可以花费 wpw_p 的费用,使 p←p−1p\leftarrow p-1。

当船位于岛屿 xx,且当前灵舵档位为 pp 时,若从岛屿 xx 出发的第 pp 条航道通向岛屿 yy,其航行费用为 zz,则 tfbz 可以花费 zz 的费用,操纵船沿这条航道抵达岛屿 yy。航行结束后,灵舵档位不会改变。特别地,若从岛屿 xx 出发的航道不足 pp 条,则船此时无法从岛屿 xx 出航,但 tfbz 仍然可以继续调整灵舵档位。

Gioush 大队最初位于岛屿 11。为了在真正深入群岛前准备好每一条可能的航线,tfbz 希望知道:从岛屿 11 出发,抵达每一座岛屿所需的最小费用分别是多少。

【输入格式】

从文件 helm.in\textbf{\textit{helm.in}} 中读入数据。

第一行三个正整数 n,m,kn,m,k,分别表示岛屿数量、单向航道数量和灵舵档位的上限。

第二行包含 k−1k-1 个非负整数 v1,v2,…,vk−1v_1,v_2,\ldots,v_{k-1},表示调高灵舵档位所需的费用。当 k=1k=1 时,该行为空。

第三行包含 k−1k-1 个非负整数 w2,w3,…,wkw_2,w_3,\ldots,w_k,表示调低灵舵档位所需的费用。当 k=1k=1 时,该行为空。

接下来 nn 行描述各座岛屿的出航航道。第 ii 行的第一个整数 did_i 表示从岛屿 ii 出发的航道数量;接下来包含 2di2d_i 个整数 yi,1,zi,1,yi,2,zi,2,…,yi,di,zi,diy_{i,1},z_{i,1},y_{i,2},z_{i,2},\ldots,y_{i,d_i},z_{i,d_i},其中 yi,jy_{i,j} 和 zi,jz_{i,j} 分别表示第 jj 条航道通向的岛屿及其航行费用。

【输出格式】

输出到文件 helm.out\textbf{\textit{helm.out}} 中。

输出一行 nn 个整数,其中第 ii 个整数表示从岛屿 11 抵达岛屿 ii 所需的最小费用。若无法抵达岛屿 ii,则输出 −1-1。

【样例 1 输入】

5 6 32 41 13 2 5 3 1 4 21 3 22 1 2 4 100

【样例 1 输出】

0 5 3 4 -1

【说明/提示】

【样例 1 解释】

岛屿 11 是 Gioush 大队的起点,因此抵达它所需的费用为 00。

保持灵舵档位为 11,可以花费 55 抵达岛屿 22;先花费 22 将灵舵档位调为 22,再花费 11 航行,可以抵达岛屿 33;沿同样的航线抵达岛屿 33 后,继续选择它的第 22 条出航航道,便可以再花费 11 抵达岛屿 44。可以证明,这三种方案的费用均为最小值。岛屿 55 无法抵达,因此输出 −1-1。

【样例 2】

见选手目录下的 helm/helm2.in\textbf{\textit{helm/helm2.in}} 和 helm/helm2.ans\textbf{\textit{helm/helm2.ans}}。

该组样例符合测试点 1∼61\sim 6 的数据范围。

【样例 3】

见选手目录下的 helm/helm3.in\textbf{\textit{helm/helm3.in}} 和 helm/helm3.ans\textbf{\textit{helm/helm3.ans}}。

该组样例符合测试点 7∼97\sim 9 的数据范围。

【样例 4】

见选手目录下的 helm/helm4.in\textbf{\textit{helm/helm4.in}} 和 helm/helm4.ans\textbf{\textit{helm/helm4.ans}}。

该组样例符合测试点 10∼1510\sim 15 的数据范围。

【样例 5】

见选手目录下的 helm/helm5.in\textbf{\textit{helm/helm5.in}} 和 helm/helm5.ans\textbf{\textit{helm/helm5.ans}}。

该组样例符合测试点 16∼2016\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证:1≤n,m≤3×1051\leq n,m\leq 3\times 10^5,1≤k≤2.5×1051\leq k\leq 2.5\times 10^5,0≤vi,wi≤1090\leq v_i,w_i\leq 10^9,0≤di≤k0\leq d_i\leq k,∑i=1ndi=m\sum_{i=1}^{n}d_i=m,1≤yi,j≤n1\leq y_{i,j}\leq n,1≤zi,j≤1091\leq z_{i,j}\leq 10^9。

测试点编号n,mn,mkk特殊性质
1∼31\sim 3≤6\leq 6≤6\leq 6无
4∼64\sim 6≤103\leq 10^3≤103\leq 10^3无
7∼97\sim 9≤5×104\leq 5\times 10^4≤100\leq 100无
10∼1210\sim 12≤105\leq 10^5≤105\leq 10^5A
13∼1513\sim 15≤105\leq 10^5≤105\leq 10^5B
16∼2016\sim 20≤3×105\leq 3\times 10^5≤2.5×105\leq 2.5\times 10^5无

特殊性质 A:所有调高或调低灵舵档位的费用均为 00。

特殊性质 B:至多存在 1010 座岛屿满足 di≥10d_i\geq 10。

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解