printРабочее место участника

printЗадачи

2283. Атака клонов

Ограничения: время – 4000ms/8000ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Несколько клонов находятся на поле размером `N\ times\ M`, на котором есть некоторое количество препятствий. Клонам необходимо переместиться в новые позиции. Все клоны могут двигаться одновременно, но в каждой клетке может находиться только один клон. Раз в секунду каждый клон может либо перейти в соседнюю клетку, имеющую общую сторону с клеткой, на которой он находится, либо остаться на месте.
Требуется найти способ перемещения клонов за минимальное время в новую позицию. Если существует несколько вариантов с минимальным временем, то нужно найти вариант с минимальным суммарным количеством перемещений клонов.
Формат ввода
Первая строка содержит два целых числа `N` и `M` (`1\ ≤\ N,\ M\ ≤\ 15`) – размеры поля. Далее следует `N` строк, содержащих по `M` символов. Символ '#' обозначает клетку с препятствием, '.' – пустую клетку, 'S' – начальную позицию какого-либо клона, 'E' – пустую клетку, конечную позицию для клона. Гарантируется, что клоны могут пройти от начальной позиции до конечной (все связные области содержат одинаковое количество символов 'S' и 'E').
Формат вывода
Вывести в первой строке два целых числа, разделенных пробелом – минимальное количество секунд для изменения расположения клонов и минимальная суммарное расстояние, пройденное при этом клонами.

Пример ввода #1

3 3
S#.
S..
#EE

Пример вывода #1

3 6

Пример ввода #2

3 5
SSSSS
##.##
EEEEE

Пример вывода #2

6 22
loading