C - Maze
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 100 点
問題文
うしくんとうくくんが H \times W マスの迷路の中に閉じ込められてしまった。
とりあえず、いつのまにかポケットに入っていた地図を元に合流したい。
地図によると迷路は以下の6種類のマスからできているようだ。
# 壁 通ることはできない
. 床 隣接する上下左右方向に移動できる(必ずしも移動する必要はない)
> 動く床(右) 右方向のみに移動できる(必ず移動を試みる)
< 動く床(左) 左方向のみに移動できる(必ず移動を試みる)
^ 動く床(上) 上方向のみに移動できる(必ず移動を試みる)
v 動く床(下) 下方向のみに移動できる(必ず移動を試みる)
壁の存在する方向に移動しようとした場合、移動できず移動元のマスに留まる。
うしくんとうくくんの初期位置の候補が Q 個与えられるので、各初期位置について、二人が合流するまでにかかる最短の移動回数を求めよ。
一回の移動の際にはうしくんとうくくんは独立に行動できる。また、うしくんとうくくんは心が通じ合っているので、お互いに最適な行動を取ることが可能である。
制約
- 3 \leq H, W \leq 30
- 1 \leq Q \leq 10^5
- S_i (1 \leq i \leq H) は上記の 6 種類の文字のみからなる長さ W の文字列である。
- 2 \leq SX_i, GX_i \leq W - 1 (1 \leq i \leq Q)
- 2 \leq SY_i, GY_i \leq H - 1 (1 \leq i \leq Q)
- 与えられる入力において、迷路の外側 1 マスは壁で囲われていることが保証されている。
- 与えられる入力において、うしくんとうくくんの初期位置に壁があることはない。
入力
入力は以下の形式で標準入力から与えられる。
H W Q S_1 S_2 : S_H SX_1 SY_1 GX_1 GY_1 SX_2 SY_2 GX_2 GY_2 : SX_Q SY_Q GX_Q GY_Q
出力
出力は Q 行からなる。 i 行目に i 番目のクエリに対する答えを出力せよ。合流できない場合は代わりに-1を出力せよ。
入力例 1
5 4 3 #### #..# #.## ##.# #### 2 2 2 2 2 3 3 2 2 2 3 4
出力例 1
0 1 -1
最初から同じマスにいることもあります。 動く床が一つもないこともあります。
入力例 2
5 5 2 ##### #<..# ###^# #...# ##### 4 2 2 4 2 2 2 4
出力例 2
3 6
入力例 3
10 13 10 ############# #vvv>vvv#v<.# #.^.^<#>.v<.# #.#>v<<<>>v.# #^v<.v^v>#<<# #^.>vv^.^.^^# #<><vv>^vv^># ##<.>^>v.^<<# #.v.^v.>><v^# ############# 10 4 8 6 11 7 11 5 8 9 7 8 12 4 5 6 5 6 8 6 12 3 11 7 2 5 8 9 10 4 6 8 4 3 4 3 7 7 3 6
出力例 3
-1 2 3 -1 10 3 -1 -1 0 9