#P1162. 地铁换乘

    ID: 174 传统题 1000ms 128MiB 尝试: 0 已通过: 0难度: 普及+/提高− ← 上一题 下一题 → 随机一题 上传者: 标签 图论 最短路 Dijkstra 分层图
显示设置

地铁换乘

题目背景

城市新开了几条地下线路,站台之间的换乘通道弯弯绕绕。志愿者服务台每天都要回答同一个问题:从某一站到另一站,最少要花多少时间。

题目描述

城市里有 nn 座地铁站,编号 1∼n1 \sim n,以及 mm 条线路。

第 ii 条线路由 kik_i 座站点依次组成一个序列 vi,1,vi,2,…,vi,kiv_{i,1}, v_{i,2}, \dots, v_{i,k_i},列车沿这条线路双向运行。在线路上相邻的两站之间乘车需要 11 分钟(两个方向都一样)。同一条线路的站点序列中不会出现重复的站点。

乘车规则如下:

  • 出发时,你可以在 AA 站任意挑选一条经过 AA 的线路登车;下车不额外耗时。
  • 乘车过程中,你可以一直在同一条线路上坐到任意一座该线路经过的站点,耗时按经过的站间段数计算。
  • 在某一站下车后,你可以换乘到经过这一站的任意另一条线路,一次换乘耗时 55 分钟;同一条线路内部不需要换乘。

请计算从 AA 站到 BB 站所需的最少时间。如果无论如何都到不了 BB,输出 -1。如果 A=BA = B,答案为 00。

输入格式

第一行四个整数 n,m,A,Bn, m, A, B。

接下来 mm 行,第 ii 行先给出一个整数 kik_i,随后给出 kik_i 个整数,表示第 ii 条线路的站点序列。

输出格式

一行一个整数,表示最少时间;到不了输出 -1。

输入输出样例 #1

输入 #1

4 2 1 4
4 1 2 3 4
2 2 3

输出 #1

3

说明

在 11 号站登上第 11 条线路,依次经过 22 号站、33 号站,到 44 号站下车,共 33 分钟。

输入输出样例 #2

输入 #2

5 2 1 5
3 1 2 3
3 3 4 5

输出 #2

9

说明

先坐第 11 条线路从 11 号站到 33 号站(22 分钟),在 33 号站换乘第 22 条线路(55 分钟),再坐到 55 号站(22 分钟),共 99 分钟。

输入输出样例 #3

输入 #3

3 1 1 3
2 1 2

输出 #3

-1

数据范围与约定

  • 对于 30%30\% 的数据,n≤10n \le 10,∑ki≤20\sum k_i \le 20。
  • 对于 60%60\% 的数据,每条线路最多包含 22 座站点。
  • 对于 100%100\% 的数据,1≤n,m≤1051 \le n, m \le 10^{5},1≤ki≤n1 \le k_i \le n,∑ki≤2×105\sum k_i \le 2 \times 10^{5},1≤A,B≤n1 \le A, B \le n;同一条线路内站点互不相同。