#P5244. 「2019-05-05提高模拟赛」地铁(subway)

「2019-05-05提高模拟赛」地铁(subway)

Description

地铁是现在城市里的重要交通工具,就在前几天,福州地铁 2 号线开通啦!

pic1

由于网速问题,部分选手可能无法显示图片,遇到这种情况,选手可以下载附加文件,并预览其中的sample.bmp,或点击这里查看。

许多城市的地铁官网上都有查询两个站之间预计耗时的工具,现在给出一张地铁图以及一组地铁站,求从一个站到另一个站的预计耗时。
具体来说:从每一个地铁站到达另一个相邻的地铁站都需要一定的时间,此外,如果从一条线 ii 换乘到另一条线 jj,那么你需要 ij|i-j| 个单位时间步行。
以上图为例,如果每一个站到相邻的站都需要 22 个单位的时间,那么从 上藤福州大学2727 个单位时间。

关于地铁图的几点补充说明

  • 所有的地铁站都可以正常使用;
  • 单条线路不会分叉,也不会形成回路;
  • 如果任意 22 条线都经过了某一个站点,那么它们一定可以换乘;
  • 所有的地铁线路均可以双向通行。

Input Format

第一行两个整数 t,nt,n,表示线路数量和站点数量(换乘站算作一个)。
接下来 tt 行,每行第一个正整数表示线路的长度 lenlen (经过的站点数量),然后是一个长度为 2len12len-1 的数列 aa,对于 x[1,len)Zx\in[1,len)\cap\mathbb{Z}:有三元组 (a2x1,a2x,a2x+1)(a_{2x-1},a_{2x},a_{2x+1}),表示从 a2x1a_{2x-1}a2x+1a_{2x+1} 有一条长度为 a2xa_{2x} 的边,即需要 a2xa_{2x} 的时间通过。
之后是一行两个整数 u,vu,v,表示询问的起点和终点。

Output Format

一行一个数,表示答案,如果无解,输出-1

Sample

__ 由于本题输入信息较大,请选手从附加文件中下载样例。 __

附加文件使用说明:

  • 样例文件存储在subway文件夹下,且每个样例分文件夹存储。
  • 样例文件夹下inout文件分别对应改组样例的输入和输出文件,pdf文件是对样例的解释。

Hint

子任务

本题采用捆绑评测的方式进行评测,每个只有你通过了这个数据包的所有数据,你才会获得这个数据包的部分分。

mm 表示总的边数,即 m=i=1tlenim=\sum_{i=1}^tlen_i

数据包编号 分值 n,mn,m\le 特殊性质
11 10 pts 1010 无特殊性质
22 15 pts 100100
33 25 pts 10510^5 t=2t=2
44 20 pts 对于每一个换乘站,经过的线路不会超过1010
55 30 pts 无特殊性质

对于所有数据,保证 n,m,leniZn,m,len_i\in\mathbb{Z^*} ,保证输入数据中所有的数、答案及标程运算过程中出现的数均在有符号 3232 位整数的范围内(对于 C/C++\texttt{C/C++},有符号 3232 位整数对应的数据类型为 int\texttt{int};对于 pascal\texttt{pascal},有符号 3232 位整数对应的数据类型为 longint\texttt{longint})。

提示

本题输入输出文件较大,请注意使用 IO 优化。如果您不会使用 IO 优化,可以参考这里