АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

409. Кладотолкатель

Ограничение времени: 2 сек.
Ограничение памяти:65536 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил Неизвестный

Лабиринт представляет собой матрицу MxN, некоторые ячейки которой пустые, а остальные заполнены камнями. В одной из пустых ячеек находится клад, а в другой — кладотолкатель. Кладотолкатель и клад не могут находиться в ячейках, заполненных камнями, за пределами лабиринта, а также одновременно в одной и той же ячейке. Кладотолкатель может передвигаться в соседнюю ячейку (соседними считаются ячейки, граничащие по стороне), а также передвигать клад следующим образом: нужно встать в соседнюю к кладу ячейку и толкнуть его от себя. При этом клад передвинется в соседнюю ячейку в направлении, заданном толчком, а кладотолкатель переместится в ячейку, где только что находился клад.

Требуется написать программу, которая определяет последовательность толчков и передвижений кладотолкателя, следуя которой клад можно передвинуть к выходу (выход находится в пустой ячейке). Так как клад очень тяжелый, количество толчков должно быть минимальным. При наличии нескольких оптимальных последовательностей следует указать любую из них.

Формат входных данных:

Первая строка входного файла содержит числа М и N . Следующие М строк содержат описание лабиринта. Каждая строка состоит из N символов, описывающих ячейки лабиринта: заполненная камнями ячейка обозначается латинской буквой 'X', пустая ячейка обозначается символом '.' (ASCII код 46), начальная позиция кладотолкателя — буквой 'Y', начальная позиция клада — латинской буквой 'В', выход — латинской буквой 'Т'.

Формат выходных данных:

Если решения не существует, то файл должен cодержать слово 'NO'. Иначе, в первой строке выходного файла должно содержаться слово 'YES', а во второй строке — последовательность символов, определяющая действия кладотолкателя, в частности, символы 'w', 'e', 'n', 's' обозначают передвижения кладотолкателя на запад, восток, север и юг соответственно, а символы 'W', 'E', 'N', 'S' обозначают толчки кладотолкателя в соответствующих направлениях.

Пример файлов входных и выходных данных:

stdin

stdout

3 3

..Y

.B.

TXX

YES

sWnwS

 


Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи с соревнований и сборов / Школьные олимпиады и курсы Вологодской области / ВсОШ, региональные этапы / Областная олимпиада школьников 2003-2004 /
407. Игра 409. 406. Палиндромы 405. Прибавлятель 410. Прямоугольники
 
время генерации 0.079 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.