11485. Цифрове графіті


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

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

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

У нас є сітка з \(H\) рядками і \(W\) стовпцями. Нехай (\(i, j\)) — квадрат у \(i\)-му рядку та \(j\)-му стовпці. Кожен квадрат пофарбований в чорний або білий колір. Якщо \(S_{i, j}\) є \('\#'\), то (\(i, j\)) пофарбовано в чорний колір; якщо \(S_{i, j}\) є '.', то (\(i, j\)) пофарбовано в білий колір.

Гарантується, що крайні квадрати білі. Тобто квадрати, які можна представити у вигляді (\(1, j\)), (\(H, j\)), (\(i, 1\)) або (\(i, W\)) білі.

Розглянемо частину сітки, пофарбовану в чорний колір, як багатокутник. Скільки у нього сторін (принаймні)? Тут гарантується, що частина, пофарбована в чорний колір, утворює багатокутник без самоперетину, тобто виконується наступне:

  • хоча б один квадрат пофарбований у чорний колір;

  • ми можемо подорожувати між будь-якими двома квадратами, пофарбованими в чорний колір, багаторазово рухаючись вгору, вниз, вліво або вправо, проходячи тільки через чорні квадрати;

  • ми можемо подорожувати між будь-якими двома квадратами, пофарбованими в білий колір, багаторазово рухаючись вгору, вниз, вліво або вправо, проходячи тільки через білі квадрати. (Зверніть увагу, що крайні квадрати в сітці пофарбовані в білий колір.)

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

Перший рядок містить цілі числа \(H, W\) (\(3 \le H, W \le 10\))

Наступні  \(H\) рядків містять по \(W\) символів \(S_{i,j}\) (\(S_{i,j} = '\#', '.'\))

Числа розділяються пропуском, символи не розділяються.

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

У вихідний потік виведіть шукану кількість сторін.

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

5 5
.....
.###.
.###.
.###.
.....

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

4

Коментарі

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