14088: Лабіринт хрестики нолики-Maze Tac Toe-USACO2021OpenSilver


Відправити розв'язок

Бали: 100 (partial)
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
Brain****, C, C++, Java, Pascal, Python, v8js

Бесі любить шукати шляхи в лабіринтах і грати в "хрестики-нулики". Фермер Джон придумав для неї спосіб грати в обидві гри одночасно!

Перше - "хрестики-нуліки" - замість розміщення X і O на гратці \(3 \times 3\), корови грають з М і О на гратці \(3 \times 3\). Під час ходу корова може поставити М або О в будь-який порожню комірку (на відміну від стандартної гри, де один гравець завжди ставить X, а інший завжди О). Переможець цієї гри той, хто перший отримає слово 'MOO' горизонтально, вертикально чи по діагоналі. У зворотному порядку теж зараховується, тобто OOM теж виграшна комбінація. Як і в стандартній грі, можна заповнити все поле і ніхто не виграє. Хід у грі вказується 3 символами 'Mij' або 'Oij', де \(i\) та \(j\) в інтервалі \(1 \ldots 3\) і вказують рядок і стовпець, у які ставиться відповідний символ 'M' або 'O'.

ФД спроектував для Бесі квадратний лабіринт, що представляє ґратку з \(N \times N\) комірок (\(3 \leq N \leq 25\)). Деякі комірки, включаючи всі граничні, містять великі стоги сіна, що запобігають Бесі від заходу в ці комірки. Бесі може вільно рухатися у всі інші комірки лабіринту, роблячи кроки в у звичайних напрямках -північ, південь, захід, схід. Деякі комірки містять листок паперу, на якому написано хід для "хрестиків нуликів". По ходу того, як Бесі рухається лабіринтом, щоразу, коли вона потрапляє у таку комірку, вона має зробити відповідний хід у грі "хрестики-нулики", в яку вона грає паралельно з рухом лабіринтом. Якщо відповідна комірка у "Хрестиках-нуликах" вже зайнята, то вона не робить жодних дій. В неї немає противника у грі "хрестики-нулики", але деякі з комірок лабіринту можуть суперечити її меті скласти слово 'MOO'.

Якщо Бесі зупиняє гру "хрестики-нулики" відразу після перемоги, визначте кількість різних виграшних конфігурацій у "хрестиках-нуликах", які вона може згенерувати, рухаючись відповідно до лабіринту.

Формат вхідних даних

Перший рядок містить \(N\).

Лабіринт визначається наступними \(N\) рядками, кожен з яких містить \(3N\) символів. Кожна комірка описується блоком з 3 символів: '###' для стіни, '...' для порожньої комірки, 'BBB' для комірки з якої стартує Бесі, хід для "хрестиків-нуликів". Рівно один осередок містить 'BBB'.

Формат вихідних даних

Виведіть кількість різних виграшних комбінацій для "хрестиків-нуликів" (можливо 0), які Бесі може згенерувати рухом лабіринтом, зупинившись після досягнення мети.

Приклад вхідних даних

7
#####################
###O11###...###M13###
###......O22......###
###...######M22######
###BBB###M31###M11###
###...O32...M33O31###
#####################

Приклад вихідних даних

8

У цьому прикладі є 8 виграшних комбінацій, які Бесі може досягти:

O.M
.O.
MOM

O..
.O.
.OM

O.M
.O.
.OM

O..
.O.
MOM

O..
...
OOM

..M
.O.
OOM

...
.O.
OOM

...
...
OOM

Пояснення до однієї з них:

O..
...
OOM
Тут Бесі спочатку відвідує комірку O11, потім рухається в нижній коридор, відвідуючи O32, M33, O31. Гра припиняється, оскільки Бесі виграла.


Коментарі

Ще немає коментарів.