泡泡與她的小迷宮

發布時間: Oct. 2, 2021, 2:53 p.m.   最後更新時間: Sept. 14, 2023, 10:39 p.m.   時間限制: 1000ms   記憶體限制: 128M

做死的你在泡泡出去為你準備茶點時跑出去閒晃,沒想到居然發現了她家的地下城!?  (靈感檢定rd.1d100 = 1 大成功)

 

然後你就迷路了。(觀察檢定 rd.1d100 = 99 大失敗QQ)

 

你在地下城晃了一陣子,在撞了n個傳送門與碰了n次壁後,你在陰暗的牆角邊撿到了一張泛黃的羊皮紙 (幸運檢定 rd.1d100 = 4 大成功)

 

你又想起泡泡稍早好像說過她家的樓梯都在西北邊的角落,也就是地下城的出口,假設在地圖的右下角(n,n) 。 (意志rd.1d100 = 16 成功)

 

你發現上面粗略畫著地下城的布局,整個地下城大概可以理解為一個$N\times N$的迷宮,由'.'、'#'、'S'與小寫英文字母組成,'.'代表可以走的路,'#'代表牆壁不能走,'S'代表你拿到地圖的位置,小寫的英文字母代表傳送門,相同的傳送門之間可以互相傳送,例如你停在'a'上,你可以花1步的時間傳送到任一為'a'的地方(也可以不傳送)。


你每次可以往任一方向(上、下、左、右)走一步,但不可超出迷宮邊界也不能撞進牆壁,考慮到泡泡泡的茶可能快冷掉了,所以你要用最短的時間走到出口,請問你最少須幾步的時間才能走出這地下城呢?

第一行有一個以正整數$N(2\leq N\leq100)$,代表迷宮的長寬
接下來有$N$行,每行只有'.','#','S'與小寫英文字母組成,長度為$N$的字串,代表迷宮

輸出一個整數代表最短時間,若不可能到請輸出"-1"(不含引號)

複製範例
4
Sa..
....
####
..a.
3
複製範例
5
#####
S#..#
.....
..###
#....
7

bfs

竹中軟研35th第三次競賽(社內賽)