#P1007. 量子迷宫:时空回廊的悖论
量子迷宫:时空回廊的悖论
题目背景
在 3024 年,人类已经掌握了量子计算技术,并成功构建了第一个「量子迷宫」——一种基于量子叠加态的时空结构。该迷宫由无数个「量子单元」构成,每个单元可以同时处于多个状态(即「量子叠加态」),只有通过特定的「观测协议」才能坍缩为确定状态。
然而,由于量子纠缠效应,迷宫的路径会随时间动态变化,甚至可能出现「时空悖论」——某些路径会在观测后消失,而某些路径会在未被观测时自发形成。科学家们发现,这个迷宫的核心区域藏有「量子奇点」,它可能是人类突破光速限制的关键。
为了探索这个迷宫,「量子计算管理局」(QCA)训练了一批「量子探员」,他们配备了「量子观测仪」,可以在迷宫中执行「路径坍缩」操作,以稳定部分路径。但每次观测都会消耗能量,并且可能引发「量子退相干」,导致迷宫结构进一步混乱。
现在,你作为 QCA 的首席算法工程师,需要编写一个程序,计算在给定「量子迷宫」的初始状态下,探员如何以最少的观测次数找到通往「量子奇点」的最短路径。
题目描述
给定一个 n × m 的「量子迷宫」,每个单元格 G[i][j] 可以是以下状态之一:
'0':表示该单元格处于「基态」,探员可以自由通行。
'1':表示该单元格处于「激发态」,探员必须执行「观测」才能坍缩为 '0',否则无法通行。
'#':表示「量子壁垒」,探员无法通行。
'S':表示探员的「起始位置」(唯一)。
'T':表示「量子奇点」(唯一)。
探员每移动一步(上下左右)需要 1 单位时间。如果探员进入 '1' 单元格,必须花费 1 单位时间执行「观测」,使其坍缩为 '0'(此后该单元格永久变为 '0')。
你的任务是计算:
最少需要多少次观测才能从 'S' 到达 'T'?
在最少观测的前提下,最短的移动时间是多少?
如果无法到达 'T',输出 -1。
输入格式
第一行两个整数 n, m,表示迷宫的行数和列数。
接下来 n 行,每行一个长度为 m 的字符串,表示迷宫的地图。
保证 'S' 和 'T' 各出现一次。
输出格式
如果可达,输出两个整数 观测次数 和 移动时间,用空格隔开。
如果不可达,输出 -1。
输入输出样例 #1
输入 #1
5 5
S0010
11110
00100
11100
0000T
输出 #1
2 8
输入输出样例 #2
输入 #2
3 3
S11
111
11T
输出 #2
-1
说明/提示
样例解释 1
最优路径:S → (1,2) → (1,3) → (2,3) → (3,3) → (4,3) → (4,4) → (4,5) → T
观测点:(1,2) 和 (2,3)(共 2 次观测)。
移动时间:8 步(包括观测时间)。
样例解释 2
无论怎么观测,都无法到达 'T'(被 '#' 阻挡)。
数据范围
对于30%的数据,
对于另外40%的数据,
对于100%的数据,