Тема: Задача з блоками (можна будь-якою мовою програмування)
Ми попали в Майнкрафтію, в якій все складається з блоків розміром 1*1*1.
Вся країна поділена на однакові чанки, по одному чанку для кожного жителя. Чанк представляє собою паралелепіпед розміром n*m*k блоків. Автор задачі живе в одному з таких чанків. Деякі блоки цього чанку пусті і через них можна пройти, а деякі заставлені каменем, тобто є непрохідними. Автор зараз знаходиться в блоці з координатами (1;1;1) і йому потрібно потрапити в блок з координатами (n;m;k).
Відповідно, ці два блоки завжди пусті. Автор може переходити в сусідній блок, якщо він пустий. Сусіднім вважається блок, який має спільну грань з даним, тобто знаходиться в одному з шести напрямків: знизу, зверху, зліва, справа, ззаду, спереду. Виходити за межі чанка заборонено законами Майнкрафтії.
Визначте, за яку найменшу кількість переходів автор може потрапити з блока з координатами (1;1;1) в блок з координатами (n;m;k).
Перший рядок містить 3 числа n, m, k (1≤n,m,k≤60) – розміри чанка.
В наступному рядку знаходиться n*m*k чисел, які описують чанк. Якщо певне число рівне одиниці, то відповідний блок пустий, інакше блок є непрохідним.
Номери блоків ідуть в наступному порядку:
(1;1;1),(2;1;1),(3;1;1)...(n;1;1), (1;2;1), (2;2;1)...(n;m;1), (1;1;2), (2;1;2)... (n-1;m;k), (n;m;k).
Виведіть найменшу кількість переходів, необхідну для того, щоб потрапити з блока з координатами (1;1;1) в блок з координатами (n;m;k).
Гарантується, що завжди можна дістатися з початкового в кінцевий блок.
Вихідні дані в форматі input.txt :
2 3 2
0 1 1 1 0 1 0 0 1 0 1 0
Результат роботи в файлі output.txt :
4
В першому прикладі автор може рухатися наступним маршрутом: (1;1;1), (1;1;2), (2;1;2), (2;2;2), (2;3;2)