Kotlin Heroes: Episode 11 |
---|
Закончено |
В игре, в которую вы недавно начали играть, есть прямоугольное клеточное поле. Поле состоит из $$$2$$$ строк и $$$n$$$ столбцов — всего $$$2n$$$ клеток.
Некоторые клетки пустые, но некоторые — заняты волками. В начале игры у вас есть одна овца, расположенная в какой-то клетке, и вы хотите спасти её от волков.
Волки атакуют вас ночью, так что у вас еще есть время для подготовки. У вас есть два способа справиться с волками:
Будем считать, что волк может добраться до овцы, если существует путь по клеткам, который начинается в клетке волка и заканчивается в клетке овцы. При этом путь не содержит клеток со рвами, и каждые две последовательные клетки в пути являются соседями (то есть имеют общую сторону).
Какую минимальную сумму денег вы должны заплатить, чтобы гарантировать, что ни один из волков не сможет добраться до овцы?
В первой строке задано одно целое число $$$t$$$ ($$$1 \le t \le 1200$$$) — количество наборов входных данных. Далее следуют $$$t$$$ независимых наборов.
В первой строке каждого набора заданы три целых числа $$$n$$$, $$$h$$$ и $$$b$$$ ($$$2 \le n \le 2 \cdot 10^5$$$; $$$1 \le h, b \le 10^9$$$) — размер поля и соответствующие стоимости.
Следующие две строки описывают само поле: $$$j$$$-й символ в $$$i$$$-й строке — это '.', 'S' или 'W':
Дополнительные ограничения:
Для каждого набора входных данных выведите одно целое число — минимальную сумму денег, которую вы должны заплатить, чтобы спасти свою овцу.
42 3 7S...2 3 7S..W2 7 3S..W4 999999999 1000000000W.S.W..W
0 3 6 2999999997
26 6 7W....WW.S..W6 6 7W...WW..S..W
21 20
Одну из оптимальных стратегий в первом тестовом наборе второго теста можно изобразить так:
W....W | $$$\Rightarrow$$$ | W.#..W |
W.S..W | W#S#.W |
W...WW | $$$\Rightarrow$$$ | W..#WW |
..S..W | ..S#.W |
Название |
---|