Как решать подобные задачи?
Простые циклы, как я понял. Хотя описание задачи так себе.
Это будет что-то вроде волнового алгоритма. Ведь все вершины графа связаны - гоним волну из одной, пока не достигнем нужной. По пути соблюдаем условия в зависимости от задачи - нельзя идти назад, нельзя проходить вершины или рёбра два раза, и т.п., что там может быть. Все ветки алгоритма, достигшие нужной вершины с соблюдением всех условий, и будут удовлетворять решению. Если условия не соблюдаются на любом этапе алгоритма, ветка останавливается.
Только поле не двухмерное, а любая случайная структура. Лучше тут, наверное. Разве что дерево замкнутое - локально (местные циклы) или полностью. Но замкнутым оно становится лишь когда дошли до вершины, в которой уже были, а так в принципе этому алгоритму должно быть всё равно, по какой структуре ходить - всё в основном определяется в условиях на каждой итерации.
Проще всего, наверное, рекурсией сделать, если граф не большой.