PCC 24 歲,是學生,要去學校上學。
PCC 喜歡分享,所以平常都會開著定位系統,現在你可以即時看到 PCC 在哪裡,還有他怎麼移動的。
學校的地圖是一個 $N \times M$ 的方格,PCC 每次可以上下左右移動一格,地圖上有三種區域:
.:校園的馬路和走道,PCC 可以自由走動。#:這是建築物的實體結構,PCC 在學習穿牆但是還沒有學會,只能繞過它。$:這是進入建築的感應門,PCC 可以走到那個格子,選擇要不要進入該建築物。$ 和空地格子 . 可以走上去, 牆壁格子 # 則不能走上去。學校裡有多棟建築物,每一棟建築都有入口,有可能會有多個入口。
# 和 $ 組成,上下左右有互相連接的牆壁 # 和入口 $ 屬於同一棟建築,沒有互相連接的則屬於不同建築。$ 上,PCC 就可以選擇進入建築物 (也可以選擇不要進入)。$ 不一定會在建築周圍,有可能因為施工等原因導致該入口被牆壁包圍起來無法到達。PCC 有學過最短路徑演算法,如果他要去別的建築物的話,都只會走最短路徑,也就是他會盡量走最少的格子到目標建築的任一個入口 $。
因此,可以透過這個特性來預測 PCC 要去哪個地方躲起來讀書或是鬼混。
現在系統傳來了 $Q$ 筆資料,每一筆資料包含 PCC 的起始位置以及一段他剛剛走過的移動路徑,你需要算出 PCC 接下來有可能要去哪些建築物,計算符合條件的建築物數量。
對於每一筆資料,請根據 PCC 的移動路徑判斷他可能的目的地數量 $S$,或者是路徑有誤,並輸出對應的訊息:
GPS is broken" (不含引號)。PCC is caught" (不含引號)。第一行包含兩個正整數 $N, M$ ,代表地圖的大小。
接下來 $N$ 行,每行包含一個長度為 $M$ 的字串,由字元 ., #, $ 組成,代表學校的地圖。
接下來一行包含一個正整數 $Q$,代表詢問次數。
接下來 $Q$ 行,每行包含兩個整數 $r_i, c_i$ 和一個字串 $S_i$:
U (上), D (下), L (左), R (右) 組成的字串,代表 PCC 移動的路徑序列。 請輸出 $Q$ 行,代表某一筆詢問的答案。
5 5 #$.$# ##..$ #.... ....$ ....# 6 5 1 RU 3 5 LLULL 2 3 D 3 2 RR 3 2 DDD 3 2 U
3 GPS is broken PCC is caught 2 GPS is broken GPS is broken
範例測資解釋:
圖中有三棟建築物,分別在左上角、右上角以及右下角。
在第一筆詢問中,PCC 一開始在 $(5, 1)$ 也就是最左下角的位置,往上移了一步,根據這個移動路徑 PCC 三棟建築物都有可能前往,因此輸出 $3$。
在第二筆詢問中,PCC 一開始從 $(3, 5)$ 的位置開始移動,在第四步移動到 $(2, 2)$ 時撞到了牆,因此輸出 GPS is broken。
在第三筆詢問中,PCC 只有可能要前往右下角的建築物,因此輸出 PCC is caught。
在第四筆詢問中,PCC 有可能要前往右上角或是右下角的建築,因此輸出 $2$。
在第五筆詢問中,PCC 超出了學校地圖範圍,因此輸出 GPS is broken。
| No. | Testdata Range | Constraints | Score |
|---|---|---|---|
| 1 | 0 | 範例測資 | 0 |
| 2 | 0~12 | $N, M \le 20, Q \le 100$ | 20 |
| 3 | 13~30 | 每棟建築物恰好只有 1 個入口 | 40 |
| 4 | 0~60 | 無其他限制 | 40 |