#arc040d. [arc040_d]カクカク塗り
[arc040_d]カクカク塗り
問題文
イカの高橋君は床を塗るのが大好きです。床は のマス目状に区切られており、いくつか( 個もありうる)のマスには障害物があります。高橋君はこの床を以下のルールで塗ろうと考えています。
- 「今いるマスの床を塗って、上下左右いずれかの隣のマスに移動する」という行動を繰り返す。
- 移動するたびに向きを 度回転する。すなわち、上または下に移動した直後には右または左に移動し、右または左に移動した直後には上または下に移動する。
- すでに塗ったマスには移動しない。
- マス目の外や障害物のあるマスには移動しない。
高橋君は、すでにどのマスからスタートするかを決めています。このとき、高橋君はうまく移動しながら床を塗ることで、障害物のない全てのマスを塗ることが可能でしょうか。ただし、スタート直後の移動方向や最後に塗るマスには特に指定はありません。また、最後のマスを塗った直後には移動する必要はありません。
入力
入力はイカの形式で標準入力から与えられる。
:
-
行目には、マス目の 辺の個数を表す整数 が与えられる。
-
行目からの 行には、マス目の情報が与えられる。このうち 行目には、長さ の文字列 が与えられる。このうち 文字目は、 行目 列目のマスの情報を以下のように表す。
.
の場合:このマスが床であることを表す。#
の場合:このマスに障害物があることを表す。s
の場合:このマスは床であり、高橋君がスタートしようと決めているマスであることを表す。
ただし、これらの文字列の中には
s
がちょうど つ存在すること、.
が少なくとも つ以上存在することが保証される。
部分点
この問題には部分点が設定されている。
- を満たすデータセット に正解した場合は、 点が与えられる。
- 全てのテストケースに正解した場合は、上記とは別に 点が与えられる。
出力
全てのマスを塗ることが可能ならば POSSIBLE
、そうでない場合は IMPOSSIBLE
を 行に出力せよ。出力の末尾に改行を入れること。
入力例1
5
#....
..s..
..#..
#....
##..#
出力例1
POSSIBLE
図のように移動しながら塗れば良いです。
入力例2
5
s.###
..###
###..
#....
#..##
出力例2
IMPOSSIBLE
入力例3
3
..#
.s.
#..
出力例3
IMPOSSIBLE