本题最多只能换乘一次,所以不需要做完整的最短路,可以直接枚举“直达”和“一次换乘”两种情况。
核心是注意公交线路是单向的,因此在同一条线路上,只能从前面的站点走到后面的站点。
对每条线路预处理两个信息:
fromA[i][x]:在第 i 条线路上,从起点站 A 到站点 x 的最少经过站点数。某城市有 N 条公交线路,每条线路用一个线性表示,包含该线路经过的所有站点(站点取值范围 [1,2000]),每条线路都是单向的,且站点顺序已按线路方向给出。
现在小明要从起点站A到终点站B,他可以选择,乘坐同一线路直达(如果A和B在同一条线路上)或最多换乘一次,换乘规则如下:
请编写程序,计算从起点站点到终点站点需要经过的最少站点总数(包括起点和终点)。
第一行:一个整数N,表示公交线路数量(1≤N≤20)
接下来N行,每行表示一条公交线路
每行第一个整数M表示该线路的站点数量(2≤M≤100)
后面M个整数表示公交线路经过的站点ID(按顺序)
最后一行:两个整数A,B,表示起点站点和终点站点
一个整数,表示最少需要经过的站点数 如果无法到达,输出−1
输入
2
4 1 2 3 4
3 5 6 7
1 7
输出
-1
说明
线路1:1-2-3-4
线路2:5-6-7
没有交汇站,无法换乘,也无法直达
输入
3
5 1 2 3 4 5
4 3 6 7 8
3 5 9 10
1 8
输出
6
说明