Вообще, задачу про гамильтонов цикл на додекаэдре я знал давным-давно. Но только покрутив его в руках, понял, что о ней можно и нужно думать совсем геометрически.
Например — искомый гамильтонов путь это же простой замкнутый путь по поверхности многогранника, поэтому по теореме Жордана он разрезает эту поверхность на две части. Почему-то, когда я об этой задаче слышал абстрактно, в контексте графов, идея "а посмотрим, какие должны быть части" в голову не приходила...
(Spoiler alert: дальше идёт решение!)
Посмотрим, что у нас есть. Для начала — сведём баланс рёбер.
20 вершин, значит, 20 рёбер в гамильтоновом цикле. Значит, 30-20=10 рёбер не используются.
В каждую вершину входит 3 ребра, из которых два должны быть в гамильтоновом цикле, а одно — нет. Значит, такие "выброшенные" рёбра разбивают вершины на пары. (Геометрически: а если бумажный додекаэдр разрезать по гамильтонову циклу, то получится две области-топологические полоски, состоящие из соседних по таким "выброшенным" рёбрам пятиугольников-граней.)
На каждой грани "выброшенных" рёбер либо одно, либо два (потому что ни ноль, ни больше двух не может быть). Посмотрим, сколько граней с одним выброшенным ребром — таких, как верхняя на фото выше. Посчитаем пары "грань, выброшенное ребро на ней". Их должно быть 2*10=20; если бы на всех гранях выброшенных было по два — то пар было бы 2*12=24, значит, граней с одним выброшенным ребром 24-20=4.
Геометрически — ну да, вырезание гамильтонова пути разрежет поверхность на две "полоски", у каждой из которых будет по две "концевых" грани, итого 4. Но поскольку мы этого формально не знали, пришлось посчитать.
А ещё какие-то две из этих 4 граней будут соседними — просто потому, что среди любых 4 граней додекаэдра найдутся две соседние (от противного: возьмём одну, и тогда нужно оставшиеся 3 разместить в противоположной "полусфере", и там уже легко).
Причём ребро между ними — не-выкинутое (иначе цикл был бы границей их объединения и всё, а это слишком мало). Значит, они из разных "половинок" додекаэдра. И с этого момента всё делается уже совсем легко — но сначала додекаэдр (или его граф) надо нарисовать.
Можно, конечно, нарисовать так, как тут —
https://commons.wikimedia.org/wiki/File:Icosian_grid_small_with_labels2.svg — но мне нравится другой способ, так что давайте я сделаю ответвление туда.