eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Спасение Энтерпрайза

Спасение Энтерпрайза

Звездолет Энтерпрайз окружен Клингонами! Найдите самый быстрый путь эвакуации и выведите его время.

На вход подается прямоугольная сетка, каждая ячейка которой содержит либо Энтерпрайз, либо военный корабль Клингонов некоторого типа. С каждым типом кораблей Клингонов связано время, за которое Энтерпрайз может его победить. Для спасения Энтерпрайз должен победить каждый корабль Клингонов на некотором пути к границе сетки. Ячейки считаются соседними, если у них общее ребро, но не угол (то есть четыре соседа).

Входные данные

Первая строка содержит количество тестов t (2t100). Каждый тест начинается со строки, содержащей три числа k, w и h. Число k (1k25) - количество различных типов военных кораблей Клингонов. Число w (2w1000) - ширина сетки. Значение h (1h1000) - высота сетки.

Каждая из следующих k строк содержит заглавную латинскую букву - тип корабля Клингонов и время, необходимое Энтерпрайзу победить его. Тип корабля не может быть "E". Время задается в минутах и лежит между 0 и 100000 включительно. Все строки содержат различные типы.

Каждая из следующих h строк содержит w заглавных букв (без пробелов между ними). Среди всех h строк присутствует только одна буква "E", указывающая на местоположение Энтерпрайза; все остальные заглавные буквы - одни из k перечисленных выше, указывающих на тип военного корабля Клингонов в заданной точке.

Выходные данные

Выведите одно целое число - время, достаточное для спасения корабля.

Лимит времени 4 секунды
Лимит использования памяти 128 MiB
Входные данные #1
2
6 3 3
A 1
B 2
C 3
D 4
F 5
G 6
ABC
FEC
DBG
2 6 3
A 100
B 1000
BBBBBB
AAAAEB
BBBBBB
Выходные данные #1
2
400
Источник 2013 North America - Pacific Northwest Region Programming Contest, Задача E