[北京省选集训2019] 完美塔防
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目背景
小N最近喜欢玩一款塔防游戏。
题目描述
这款游戏的棋盘是一个 的网格,每个格子上会有以下类型物件:
- A 型炮台:会向上下两个方向同时发射激光,符号为
|
; - B 型炮台:会向左右两个方向同时发射激光,符号为
-
; - 空地:激光穿过该物件会保持方向前进,符号为
.
; - 障碍:激光到达该物件会消失,符号为
#
; - 正反射镜:激光到达该物件后,会依物理定律改变方向,但仍继续前进,符号为
\
; - 副反射镜:激光到达该物件后,会依物理定律改变方向,但仍继续前进,符号为
/
;
注意激光之间可以互相穿过,但如果激光射出网格边界,也会消失。
小 N 是一个强迫症玩家,他想让每一处空地都会被至少一束激光打到,但不能让激光攻击到自己的炮台以致损坏。
小 N 可以将任意多的 A 型炮台改造成 B 型炮台,也可以把任意多的 B 型炮台改造成 A 型炮台。
你可以告诉他能否通过这些改造实现他的目标吗?
输入格式
第一行一个正整数 ,表示数据组数。
每组数据第一行有两个正整数 。
接下来 行,每行一个长度为 的字符串,表示棋盘。
输出格式
对于每组数据,若无解则输出一行 IMPOSSIBLE
,否则输出一行 POSSIBLE
,再输出改造后的棋盘。
如果有多组解,输出任意一个即可。
3
1 3
-.-
3 4
#.##
#--#
####
4 3
.|.
-//
.-.
#\/
IMPOSSIBLE
POSSIBLE
#.##
#||#
####
POSSIBLE
.-.
|//
.-.
#\/
提示
数据范围:
对于的数据:
- ;
- 。
Special Judge provided by @tiger2005.