在一个广袤的宇宙中,存在一个由 N 个星系组成的星际网络,星系编号从 0 开始。 探险家们依赖 M 条不同的“跃迁航线”在星系间穿梭。每条跃迁航线都连接着多个星系。 如果两条不同的跃迁航线都经过同一个星系,那么探险家就可以在该星系从一条航线切换到另一条,我们称之为一次“航线换乘”。 现在,给定一系列的星际旅行任务,每个任务包含一个起始星系和一个目标星系,请计算出完成每个任务所需的最少航线换乘次数。
第一行包含三个整数 N 、 M 和 K ,分别代表星系的总数量、跃迁航线的总数量以及需要查询的旅行任务数量。 接下来 M 行,每行描述一条跃迁航线。 行首是一个整数 C ,表示该航线连接的星系数量,随后是 C 个整数,代表这些星系的编号。 再接下来 K 行,每行包含两个整数 S 和 T ,分别代表一个旅行任务的起始星系和目标星系。 所有变量的取值范围均为 [0, 1000] 。
对于每个查询任务,输出一个整数,即从起始星系 S 到目标星系 T 所需的最少换乘次数。 如果无法从 S 到达 T ,则输出 -1 。
19 9 6 5 5 8 10 13 18 4 1 5 7 9 2 9 10 7 1 5 6 7 12 15 16 7 0 4 6 8 13 14 17 6 3 4 10 15 16 18 9 2 3 6 7 8 9 12 14 17 5 1 3 7 9 11 9 3 5 6 8 9 10 14 15 18 2 5 1 8 10 6 5 12 5 7 17 8
1 1 0 0 0 0
考点:广度优先搜索(BFS)
限制 3 秒 / 256MB | 标准输入输出
推荐方向:广度优先搜索(BFS)
本题切入点
把航线看成「集团」建图(星系 ↔ 航线),从起点 BFS 求到目标星系的最少换乘次数;不可达输出 −1,多次查询可预处理全源最短路。
按层扩散搜索,无权图上第一次到达即最短路。
思路框架(广度优先搜索(BFS) 通法 · 非本题专属)
实现要点:标记访问必须在入队时做,不能在出队时做,否则会重复入队甚至超时。
复杂度:时间 O(V+E) | 空间 O(V)
该范式的通法易错点
样例 1
19 9 6 / 5 5 8 10 13 18 / 4 1 5 7 9 / 2 9 10 / 7 1 5 6 7 12 15 16 / 7 0 4 6 8 13 14 17 / 6 3 4 10 15 16 18 / 9 2 3 6 7 8 9 12 14 17 / 5 1 3 1 / 1 / 0 / 0 / 0 / 0解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-10月22号开发岗。