Hello 2020 |
---|
Закончено |
Осталось несколько дней до Корейского Нового года, и Джаехьюн пригласил свою семью в сад. Среди гостей есть дети. Чтобы сделать времяпровождение для них интереснее, Джаехьюн решил устроить игру в прятки.
Сад можно описать как таблицу $$$n \times m$$$ из единичных клеток. Некоторые (возможно ноль) из них заняты камнями, а остальные свободны. Две клетки называются соседними если у них есть общее ребро. Таким образом, у каждой клетки есть не более четырех соседей: два по горизонтали, и два по вертикали.
Так как сад можно описать как таблицу, клетки бывают двух видов: «черные» или «белые», как в шахматной доске. Первая клетка $$$(1, 1)$$$ черная. А затем, остальные клетки покрашены чередуясь. Клетки пронумерованы в 1-индексации.
Джаехьюн хочет превратить его сад в лабиринт расстановкой стен между двумя клетками. Стены могут быть размещены только между соседними клетками. Если поставить стену между двумя соседними клетками $$$a$$$ и $$$b$$$, тогда клетки $$$a$$$ и $$$b$$$ больше не считаются соседними. Можно идти прямо между двумя соседними клетками тогда и только тогда, когда нет прямой стены между ними.
Лабиринт должен обладать следующим свойством. Для каждой пары свободных клеток, должен быть ровно один простой путь между ними. Простой путь между клетками $$$a$$$ и $$$b$$$ это последовательность клеток, в которой первая клетка $$$a$$$, последняя $$$b$$$, все клетки различны, и любые две подряд идущие клетки являются соседями, между которыми не стоит стена.
Сначала, дети соберутся в клетке $$$(1, 1)$$$, и начнут играть в прятки. Ребенок может спрятаться в клетке если и только если это не стартовая клетка $$$(1, 1)$$$, и у нее есть ровно один свободный сосед. Джаехьюн посадил розы в черных клетках, так что там опасно прятаться. Поэтому Джаехьюн хочет построить лабиринт, в котором дети смогут прятаться только в клетках белого цвета.
Вам дана карта сада. Ваша задача — помочь Джаехьюну построить лабиринт.
Вашей программе нужно будет обработать несколько тестовых случаев.
В первой строке записано количество тестовых случаев $$$t$$$ ($$$1 \le t \le 100$$$). Затем, $$$t$$$ тестовых случаев даны в описанном далее формате:
Первая строка тестового случая содержит два целых числа $$$n, m$$$, размеры таблицы ($$$2 \le n, m \le 20$$$).
Каждая из следующих $$$n$$$ строк содержит строку длины $$$m$$$, состоящую из следующих символов (без пробелов):
Гарантируется, что первая клетка (клетка $$$(1, 1)$$$) свободная, и все свободные клетки достижимы из $$$(1, 1)$$$.
Если $$$t \geq 2$$$, то в каждом тестовом случае размеры поля удовлетворяют $$$n \le 10, m \le 10$$$. Иначе говоря, если во вводе дана таблица с $$$n > 10$$$ или $$$m > 10$$$, то это будет единственный тестовой случай во вводе ($$$t = 1$$$).
Для каждого тестового случая, выведите следующее:
Если нет возможных лабиринтов, выведите NO.
Иначе, выведите YES, после чего выведите таблицу $$$(2n-1) \times (2m-1)$$$ описывающих выбранный лабиринт. Все клетки в 1-индексации. Правила описания лабиринта следующие:
Пожалуйста, будьте аккуратны с лишними символами переноса строк и пробелами. Каждая строка таблицы должна содержать ровно $$$2m-1$$$ символов, а строки должны быть разделены символом новой строки. Пробелы в конце строк не должны быть пропущены.
4 2 2 OO OO 3 3 OOO XOO OOO 4 4 OOOX XOOX OOXO OOOO 5 6 OOOOOO OOOOOO OOOOOO OOOOOO OOOOOO
YES OOO O OOO NO YES OOOOO X O O X O O X O OOO X O O O O O OOOOO YES OOOOOOOOOOO O O O OOO OOO OOO O O O OOO OOO OOO O O O OOO OOO OOO O O O OOO OOO OOO
Название |
---|