前置き
Tくんは、努力の跡にシューティングゲームを作ろうと考えた。しかし、Tくんには早く帰らねばいけない事情があった。それは、小学生の妹と遊ぶことであった。Tくんは定時がすぎると発狂して叫び出すので大変迷惑である。そこであなたは、Tくんの努力の跡を手伝ってあげることにした。
問題
Tくんは面倒くさがりなので(&戦犯なので)3つの作業を頼んできた。(甘えすぎでは?)
まずTくんが乱数生成したマップ(自分の地点('S')、爆弾('B')、壁('#')、何もないマス('.'))と最初に爆発する爆弾の座標が与えられるので、
①マップ上にある爆弾の誘爆
②地点Sから周りのマスにいくための経路の取得
③自分がたどり着くことのできないマスを'*'で囲む
この
①の爆弾の誘爆では、最初に爆発する爆弾の座標(mx,my)が与えられるのでそこを中心とした、3×3のマスを爆発したという表示(%)にしてほしい。さらに爆発した範囲内にほかの爆弾があれば誘爆してほしい。どの爆弾も、その爆弾を中心とした。3×3のマスを爆発させる。
このとき、'#'(壁)は'%'に置き換えないことに注意せよ。たとえば、
. S . .
. . B .
. B # .
B . . .
3 2
というデータでは、
. % % %
% % % %
% % # %
% % % .
である。爆弾を'%'に変えるることを忘れないこと。
②では、地点Sから移動して何マスでそのマスにたどり着けるかの最短経路である。移動できる方向は 上・下・左・右 のみである。このとき
(このとき移動できないマスは、①で爆発しなかった'B',壁'#',爆発した地点'%'である)
. . .
. # .
. . S
となっていれば、
4 3 2
3 # 1
2 1 S
となる。'S'を0にしないよう注意せよ。
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . S
というデータでは、
10 9 8 7 6 5
9 8 7 6 5 4
8 7 6 5 4 3
7 6 5 4 3 2
6 5 4 3 2 1
5 4 3 2 1 S
になります。桁はそろえなくていいです。ごめんなさい。
-----------------------------------------------------------------
1 S # .
2 1 # .
3 2 % .
というデータでは、
1 S # *
2 1 # *
3 2 % *
となる。
入力
H W map[0][0] map[0][1] ... map[0][W-1] ... ... map[H-1][0] map[H-1][1]... map[H-1][W-1] mx my
1 行目に整数 H,W が与えられる。
2 行目から2+H行にかけてマップが空白区切りで与えられる。
2+H+1行目には、最初に爆発する爆弾の座標 mx,myが与えられる。
最初に爆発する爆弾は必ず存在する。
出力
すべての処理が終わった後のマップを空白区切りで出力せよ。出力の最後に改行を入れること。制約
全ての入出力ケースについて以下を満たす。
- 1 ≦ mx,my < H, W ≦ 50
入出力例
入力例1
3 3 . S # . . . B # . 1 3
出力例1
1 S # % % * % # *
解説
①の処理をしたあとのマップは、
. S #
% % .
% # .
であり、②をしたあとのマップは、
1 S #
% % .
% # .
である。
入力例2
4 4 . S . . . . B . . B # . B . . . 3 2
出力例2
* % % % % % % % % % # % % % % *
解説
このとき①の処理をすると地点’S'が爆発するため②の処理をしない。入力例3
1 5 B # S . B 1 1
出力例2
% # S 1 B
追伸
できれば幅と深さで実装してほしいな☆(Tくんがマップを作っただけなんて言えない)