SP10075 GRAVEYRD - Haunted Graveyard

题目描述

今天是万圣节,胆小的约翰与他的朋友们打算通过穿越墓地来庆祝节日。尽管约翰对此并不感兴趣,但最终同意参与冒险。到了入口,朋友们一个接一个地进入了墓地,现在轮到约翰出发了。他心中充满了儿时祖母讲述的故事。祖母曾告诉他,万圣节的晚上,墓地里会出现“幽灵洞”。这些洞并不普通,会将跌进去的人传送到墓地某个遥远的位置。而且,这些洞可怕的一点在于,它们不仅能在空间上移动人,时间也能被改变;也就是说,若有人掉入“幽灵洞”,他们会出现在墓地的某个地方,且时间可能和原来不同,仿佛身处一个与现实世界一致的平行时空。 墓地被设计成一个 _W_ × _H_ 的方格,入口在 (0, 0) 格子,出口在 (_W_−1, _H_−1) 格子。即使夜深人静,约翰也能辨认出出口。而一旦抵达那里,他便会立刻离开,再不踏足墓地。在通往出口的过程中,他只能在相邻的格子间移动,方向可以是北、东、南或西。每个格子可能有一个墓碑,“幽灵洞”或草地: - 如果格子里有墓碑,约翰不能走过,因为墓碑太高,无法翻越。 - 如果格子里有“幽灵洞”,当约翰到达时,他会被传送到墓地的某个位置,时间可能相差异。这一时间差依赖于具体的“幽灵洞”,可以是正数、负数或零。 - 如果格子里只有草地,约翰可以自由行走。 约翰充满了恐惧,希望尽快走出墓地。因此,他找到了你——一位著名的程序员,希望你能写一个程序,根据墓地的描述,计算从入口到出口的最短用时。若“幽灵洞”可以让约翰更快到达,他也愿意尝试,但他很害怕迷失和无限期地借助洞往返于过去,因此你的程序必须能检测并报告这种情况。

输入格式

输入包含多组数据。每组数据的第一行包含两个整数 $W$ 和 $H$,表示墓地的宽和高。接下来的 $H$ 行,每行包含 $W$ 个字符,描述墓地布局。每个字符可以是以下几种: - `.` 表示草地 - `#` 表示墓碑 - 数字 `0` 到 `9` 表示“幽灵洞”,数字表示时间差 输入结束符是 $W = H = 0$。

输出格式

对于每组数据,输出一行结果。如果约翰能从入口到达出口,则输出他需要的最短时间。如果他无法到达出口或会陷入无限循环,则输出 `NEVER`。

说明/提示

- $1 \leq W, H \leq 50$ **本翻译由 AI 自动生成**