Здравствуйте, Начинающий программист, Вы писали:
Кажется очевидным, что ситуации с видами фруктов не зависят друг от друга (действительно: ёжик каждый раз оперирует с векторами, и нигде нет межкомпонентных зависимостей).
Поэтому можно свести задачу к такой (срез по одному фрукту):
— имеется орграф, каждая из вершин которого помечена как несущая цвет или бесцветная
— ёжик путешествует по графу во всех направлениях, причём "по ходу" он не переносит цвет, а "по противоходу" переносит из покрашенной в непокрашенную
Заметим, что единожды покрашенная вершина (изначально или на каком-то шаге) сохраняет свой цвет.
Если все вершины достижимы по ходу, то вопрос о единственности стабильного состояния сводится к следующему: есть ли пустая вершина, к которой в противоходе можно придти из двух разноцветных вершин через прозрачные. Это выясняется с помощью заливки.
— Берём покрашенную вершину и от неё заливаем все пустые (помечая их как вторичные).
— Берём следующую покрашенную — и тоже заливаем... и так далее.
— Как только мы в ходе заливки наталкиваемся на свежепокрашенную (т.е. вторичную) вершину — всё, стоп. Это значит, что варианты возможны (мы эту вершину можем покрасить тем или другим способом).
Заливать можно от каждой вершины по-отдельности, или же единым фронтом ото всех вершин сразу.
А вот если некоторые вершины достижимы только по противоходу... тут надо мало-мало подумать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>