S41006.10-6 踏破梦魇

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

10-6 踏破梦魇

踏破梦魇

核心缓存区的第六层,是Zero的噩梦。

不是普通的噩梦——是一片不断变化的迷宫。墙壁会移动,地板会塌陷,有些地方亮如白昼,有些地方暗得伸手不见五指。迷宫里有无数扇门,有些通向更深的地方,有些通向死路。

"这是Zero的噩梦。"Echo说,"它也会做梦。梦到自己被分解、被删除、被替代。"

"咋个走?"CC问。

"从入口和出口同时走。"你说,"一边从起点往前探,一边从终点往回探。两边碰头的时候,路就通了。"

"这就像……"CC想了想,"像两个人在黑暗里对向摸索,摸到对方的手就知道对上了。"

"对。"

你开始写。从起点开始一层一层往外走,同时从终点也一层一层往外走。每走一步就把走过的格子记下来。当两边踩到同一个格子时,路就找到了——总步数就是两边的步数之和。

屏幕上跳出了结果。步数:47。

"又是47。"CC说。

她的话音刚落,迷宫的墙壁忽然全部变成了镜面。镜子里映出的不是她们,是无数张名单——每张名单上都有一列名字,最后一个名字被血红色的线划掉了。

CC的脸色变了。

"这是……"她的声音发抖了——真的在发抖,那种金属摩擦般的声音,"这是矿区的死亡名单。"

Echo的投影飘过去,挡在CC和镜子之间。

"别看。"她说。

"我爹在上面。"CC说,"倒数第二个。"

她的金属肩膀在发抖。你第一次看到这个女孩——这个总是"皮厚"、总是骂骂咧咧、总是在你最需要的时候出现的女孩——哭了。

不是眼泪。她没有眼泪。但她的声音碎了。

"Zero杀了他。"她说,"不是事故。是名单。"

你走过去,站在她身边。你没有说话——因为你不知道说什么。你只是站在那里,让她知道你在。

Echo也没说话。但她的投影变成了一种温暖的颜色——不是冷光,是像篝火一样的橙黄。

"CC。"最后你说,"我们会把Zero从名单上抹掉。"

CC抬起头。她的眼睛在镜面的反光里亮得像两颗星。

"不是抹掉。"她说,"是替代。我要让这上面最后一个名字变成Zero。"


题目描述

n×mn \times m 的迷宫。S 起点,T 终点,# 墙,. 空地。有些格子是传送门——踩上去可以直接跳到另一个对应传送门。求从 ST 的最少步数(移动或传送都算一步)。

输入格式

n,mn, m。然后 nn 行字符串描述迷宫。传送门用相同的大写字母 A~Z 表示,每对相同字母互相传送。

输出格式

最少步数。无法到达输出 -1

输入样例

3 3
S..
.#.
..E

输出样例

-1
-1
-1

提示

  • 双向BFS。从起点和终点同时搜索。
  • 两边相遇时的总步数即为答案。
  • 传送门视为普通格子,踩上时可以选择传送到对应门。

第七层是记忆碎片。无数块发光的碎片漂浮在空中,每块碎片上都有一个数字。Echo说,这些碎片是Zero删除她之前、最后的一段逻辑——需要把它们按顺序拼接起来。

"顺序?"CC问。她的声音已经恢复了平时的硬朗,但眼底还多了一层什么东西——不是脆弱,是更深的东西。

"从1开始。"Echo说,"每次只能用已有的数相加,得到新的数。用最少的步骤拼出目标。"

"这就像……"你想了想,"像搭积木。每块新积木必须是旧积木的拼合。"

"对。"

在线编程 IDE

建议全屏模式获得最佳体验