| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 3 초 | 256 MB | 61 | 34 | 27 | 58.696% |
JOI 君は大自然の広大なスケートリンクでアイススケートをするのが趣味である.
スケートリンクは南北に R マス,東西に C マスからなる長方形で表される.北から r 行目,西から c 列目 のマスをマス (r, c) と書くことにする.それぞれのマスは JOI 君が通過可能なマスであるか,氷塊があって通 過不可能なマスであるかのいずれかである.また,スケートリンクの外周のマスにはすべて氷塊があり,リ ンクの外に出てしまうことはない.すなわち,マス (i, 1), (i,C) (1 ≦ i ≦ R) およびマス (1, j), (R, j) (1 ≦ j ≦ C) には氷塊がある.
JOI 君はあまりスケートがうまくない.JOI 君はスケートリンク上で移動するときは,東西南北のうち 1 つの方向に向かってリンクの現在 JOI 君がいるマスを蹴り,氷塊にぶつかる直前のマスまで進んで止まる. リンクを蹴ってから止まるまでを 1 回の移動と数える.隣接するマスに氷塊があるときは,その方向には 移動できない.
ある日 JOI 君がスケートを楽しんでいると,なんと,JOI 君がリンクを蹴ると,そのマスに氷塊が生えて くることに気がついた.リンクを蹴った地点以外で通過したマスには氷塊は生えない.この状態でスケー トを続けるのは非常に危険なので,JOI 君はできるだけ早くこのスケートリンクから脱出したい.
JOI 君の現在地はマス (r1, c1) である.このスケートリンクから脱出するには,出口のマス (r2, c2) で止ま る必要がある.JOI 君が安全にスケートリンクから脱出できるよう,現在地から移動を開始して出口のマ スで止まるには,少なくとも何回の移動が必要かを計算するプログラムを書いてほしい.スケートリンク の状態や JOI 君の現在地によっては,JOI 君がどのように移動しても出口のマスに止まることができない こともあるかもしれない.JOI 君が移動の途中に出口のマスを通過しただけでは,スケートリンクからは 脱出できないことに注意せよ.
スケートリンク上の氷塊の情報と,JOI 君の現在地,出口のマスの位置が与えられたとき,JOI 君が現在 地から移動を開始して出口のマスで止まることができるかどうかを判定し,できる場合は,そのために必 要な移動回数の最小値を求めるプログラムを作成せよ.
標準入力から以下のデータを読み込め.
標準出力に,JOI 君が現在地から移動を開始して出口のマスで止まるために必要な移動回数の最小値を 表す整数を 1 行で出力せよ.ただし,JOI 君がどのように移動しても出口のマスで止まることができない 場合は,-1 を出力せよ.
追加の制限はない.
5 5 ##### #...# #...# #...# ##### 2 2 3 3
4
入力例 1 において,スケートリンクの初期状態は以下の通りである.白の四角形が書かれたマスは氷塊 を,J と書かれたマスは JOI 君の現在地を,E と書かれたマスは出口を表す.
まず,JOI 君が東向きに移動すると,その後のスケートリンクの状態は以下のようになる.
この後 JOI 君が西向き,南向き,北向きの順に移動することで,合計 4 回の移動で出口で止まることが できる.3 回以下の移動で出口で止まることはできないので,4 を出力する.
8 6 ###### #..#.# ##...# #....# #.#..# #....# ##...# ###### 4 3 6 4
5
5 5 ##### #.#.# #.#.# #.#.# ##### 2 2 4 4
-1
3 3 ### #.# ### 2 2 2 2
0
入力例 4 において,JOI 君の現在地は出口のマスであるから,必要な移動回数は 0 回である.