Есть больница, которая состоит из шестнадцати палат. Палаты разделены между собой дверными проёмами. Палаты № 6, 7, 10 и 11, то есть центральные, имеют по четыре дверных проёма каждая. Палаты 2, 3, 5, 8, 9, 12, 14, 15 и 16 имеют по три проёма (правда, один из проёмов палаты № 16 — это выход на свободу). Наконец, угловые палаты 1, 4 и 13 имеют по два проёма. Естественно, перемещаться между палатами можно только через изображённые проёмы.
Изначально в каждой палате было ровно по одному пациенту.
Однажды синенький пациент (ну, одежда у него синяя или что-то в этом духе) из угловой палаты № 1 выздоровел. (Остальные — нет. Я обозначил всех оставшихся больных красными точками. Больные, естественно, не могут передвигаться.) Он настолько обрадовался, что решил перед выходом на волю обойти всех больных и каждому сказать пару ласковых слов поддержки. А выйти из больницы, понятное дело, синенький человечек обязан по фиолетовой стрелке, ведь других выходов не имеется.
Но есть громадная проблема, существенное ограничение. Синий выздоровевший не имеет права ни к одному больному заходить более одного раза! Иными словами, каждый больной должен быть посещён синеньким человечком именно единожды, не более и не менее. [Вот такая странная там у них болезнь, представьте себе: если заходишь второй раз в палату к уже посещённому больному, то умираешь.]
А у меня стоит задача максимум. А как отыскать все маршруты для синего человечка?
Если мы решаем уравнение, то мы должны найти все его корни.
Вот и в данной задаче я бы хотел найти именно все маршруты для синенького. И доказать, что других не имеется.