Можно не выделять компоненты связности, а просто считать что переходов между ячейками разного цвета нету. В этом графе строить
Гамильтонов цикл для каждой компоненты связности.
Ещё почитать можно здесь:
e-maxx.ru/algo/
Всё выше сказанное имеет смысл, если вы знаете что такое граф, таблица смежности и т.д. Если нет- дайте маяк. Буду расписывать подробнее.