在一个未来的量子计算中心,您需要引导一个数据包(Data Packet)通过一个复杂的量子网络。该网络可以被抽象为一个 m × n 的二维矩阵。网络中的每个节点都有其特定的功能: - 标准通道 (Standard Channel) : 用数字 0 表示,数据包可以在相邻的标准通道节点之间自由移动,每次移动消耗 1 个时间单位。 - 防火墙 (Firewall) : 用数字 1 表示,这些节点是损坏的或被设置为不可通行,数据包无法进入。 - 量子纠缠门 (Quantum Entanglement Gate) : 用数字 2 表示。网络中存在成对的纠缠门。当数据包进入一个纠缠门时,它可以瞬间、不耗费任何时间地传送到与之配对的另一个纠缠门所在的位置。 - 起点 (Source) : 用符号 S 表示,是数据包的初始位置。 - 终点 (Destination) : 用符号 E 表示,是数据包的目标位置。 您的任务是计算出数据包从起点 S 到达终点 E 所需的最短时间。数据包只能在网络的上下左右四个方向上移动,不能移出网络边界,也不能穿过防火墙。如果数据包无法到达终点,则返回 -1 。
输入的第一行包含两个正整数 m 和 n ( 1 ≤ m, n ≤ 50 ),分别代表量子网络的行数和列数。 接下来的 m 行,每行包含 n 个字符,描述了量子网络每个节点的类型。字符集为 \'0', '1', '2', 'S', 'E' 。
输出一个整数,表示数据包从起点到终点所需的最短时间。如果无法到达,则输出 -1 。
4 9 001010000 00000000S 0100E0001 100000001
5
考点:广度优先搜索(BFS)
数据规模 n ≤ 50 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:广度优先搜索(BFS)
本题切入点
0-1 BFS 最短路:普通移动边权 1、纠缠门传送边权 0,用双端队列把 0 权边压到队首即可线性求 S→E 最短时间;不可达返回 −1。
按层扩散搜索,无权图上第一次到达即最短路。
思路框架(广度优先搜索(BFS) 通法 · 非本题专属)
实现要点:标记访问必须在入队时做,不能在出队时做,否则会重复入队甚至超时。
复杂度:时间 O(V+E) | 空间 O(V)
该范式的通法易错点
对照本题
样例 1
4 9 / 001010000 / 00000000S / 0100E0001 / 1000000015解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-9月10号开发岗。