10473: Лівий лабіринт


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

Бали: 100 (partial)
Time limit: 1.0s
Memory limit: 64M

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

У спортзалі розміром \(N \times M\) метрів збудували сучасний атракціон під назвою "Лівий лабіринт". Для цього на підлозі спортзалу з інтервалом 1 метр накреслили лінії, паралельні стінам спортзалу. Таким чином, спортзал розбили на \(N \times M\) клітин. Далі деякі з цих клітин пофарбували у чорний колір.

Атракціон полягає в тому, що учасника ставлять у деякій клітці спортзалу та просять якнайшвидше добігти до деякої іншої клітини. При цьому накладаються такі умови:

  • Учаснику заборонено ходити чорними клітинами.
  • Прийшовши до якоїсь клітини, учасник може піти або прямо, або ліворуч, або праворуч (якщо у відповідному напрямку клітина не пофарбована в чорний колір): ходити назад, а також ходити по діагоналі забороняється.
  • За весь час шляху учаснику дозволяється повернути праворуч (тобто піти з поточної клітини праворуч щодо того, звідки він прийшов у цю клітинку) не більше \(K\) разів.

У початковій клітині учасник може стати обличчям у той бік, у який йому заманеться. З якого боку учасник прибіжить до кінцевої клітини також не важливо. Відомо, що на те, щоб перебігти з клітки до сусідньої, учасник витрачає рівно 1 секунду. Потрібно визначити мінімальний час, за який учасник зможе досягти кінцевої клітини.

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

У вхідному потоці спочатку записано число \(K\) — кількість дозволених поворотів направо (ціле число з діапазону від 0 до 5), потім записано числа \(N\) і \(M\), що задають розміри спортзалу — натуральні числа, що не перевищують 20.

Далі записано \(N\) рядків \(M\) чисел у кожній . Число 0 позначає непофарбовану клітину, число 1 - пофарбовану, число 2 - клітинку, звідки стартує учасник і число 3 - клітинку, куди потрібно добігти (клітини, позначені 2 і 3 непофарбовані). У лабіринті завжди є рівно одна початкова клітина і рівно одна клітина, в яку потрібно потрапити.

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

У вихідний потік виведіть мінімальний час, за який можна дістатися до кінцевої клітини. Якщо потрапити до кінцевої клітини з дотриманням усіх умов не можна, виведіть –1.

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

1 3 4
0 0 2 0
0 1 1 0
0 0 3 0

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

6

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

0 5 5
0 1 0 0 0
0 1 0 1 0
0 0 3 1 0
1 0 1 1 0
2 0 0 0 0

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

12

Коментарі

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