12131. Крижаний лабіринт
Є сітка \(N × M\) і гравець, що стоїть на ній.
Нехай \((i,j)\) позначає квадрат у \(i\)-му рядку зверху та \(j\)-му стовпчику зліва цієї сітки.
Кожен квадрат цієї сітки є льодом або скелею, яка представлена \(N\) рядками \(S_1 ,S_2 ,…,S_N\) довжини \(M\) таким чином:
- якщо \(j\)-й символ \(S_i\) дорівнює '.', квадрат \((i ,j)\) - лід;
- якщо \(j\)-й символ \(S_i\) дорівнює '#', квадрат \((i,j)\) це камінь.
Зовнішня периферія цієї сітки (всі квадрати в 1-му рядку, \(N\)-му рядку, 1-му стовпчику, \(M\)-му стовпчику) - камінь.
Спочатку гравець стоїть на квадраті (2,2), який є льодом.
Гравець може зробити наступний хід нуль або більше разів.
- Спочатку вкажіть напрямок руху: вгору, вниз, вліво або вправо.
Потім продовжуйте рухатися в цьому напрямку, поки гравець не наткнеться на камінь. Формально продовжуйте робити наступне: якщо наступний квадрат у напрямку руху — лід, перейдіть до цього квадрата та продовжуйте рух;
якщо наступним квадратом у напрямку руху є камінь, залишайтеся в поточному квадраті та припиніть рух.
Знайдіть кількість льодових квадратів, яких гравець може торкнутися (передати або зупинитися).
Обмеження
- \(3≤N,M≤200\)
- \(S_i\) — це рядок довжини \(M\), що складається з '#' і '.'.
- Квадрат \((i,j)\) є каменем, якщо \(i=1\), \(i=N\), \(j=1\) або \(j=M\).
- Квадрат (2,2) - лід.
Формат вхідних даних
Перший рядок містить цілі числа \(N,M\).
Наступні \(N\) рядків містять \(S_i\).
Формат вихідних даних
У вихідний потік виведіть відповідь.
Приклад вхідних даних
6 6
######
#....#
#.#..#
#..#.#
#....#
######
Приклад вихідних даних
12
Наприклад, гравець може зупинитися на (5,5), рухаючись таким чином:
- (2,2)→(5,2)→(5,5).
Гравець може пройти (2,4), рухаючись наступним чином:
- (2,2)→(2,5), передаючи (2,4) у процесі.
Гравець не може проходити або зупинятися на (3,4).
Коментарі