小红面对若干条单向公交线路,每条线路按行驶方向给出互不重复的站点。她要从站点 A 到站点 B ,可以直达或最多换乘一次,换乘只能发生在两条线路的共同站点。 计算行程经过的最少站点数,起点和终点都计入,换乘站只计一次;无法到达输出 -1 。
第一行输入线路数 n 。接下来 n 行,每行先输入站点数 m ,再按方向输入 m 个互不重复的站点编号。最后一行输入 A,B 。 保证 1 ≤ n ≤ 20 , 2 ≤ m ≤ 100 ,站点编号在 [1,2000] , A≠ B 。
输出最少经过站点数,无法到达输出 -1 。
2 4 1 2 3 4 3 5 6 7 1 7
-1
3 5 1 2 3 4 5 4 3 6 7 8 3 5 9 10 1 8
6
考点:图
数据规模 n ≤ 20 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:图
本题切入点
线路图最短路:先枚举直达(同一线路内站点相对顺序),再枚举换乘站把两条线路串起来,取最少经过站点数(换乘站只计一次);n≤20 可直接枚举。
把关系抽象成点与边,再按问的类型选遍历/最短路/连通性算法。
思路框架(图 通法 · 非本题专属)
实现要点:注意是有向图还是无向图,无向图加边记得双向。
复杂度:时间 O(V+E) 遍历 / O(E log V) Dijkstra | 空间 O(V+E)
该范式的通法易错点
对照本题
样例 1:输入 2 / 4 1 2 3 4 / 3 5 6 7 / 1 7 → 输出 -1
两条线路没有共同站点且无法直达。
样例 2:输入 3 / 5 1 2 3 4 5 / 4 3 6 7 8 / 3 5 9 10 / 1 8 → 输出 6
从第一条线路乘到站点 3,再换乘第二条线路到 8。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月17号开发岗。