Я знаю, что вы используете рекурсивную реализацию DFS, где все узлы начинаются как белые, окрашиваются в серый цвет при первом обнаружении и окрашиваются в черный цвет после изучения всех их дочерних элементов, вы знаете, что существует цикл, если вы когда-либо столкнетесь с серый узел.
Но как это сделать с реализацией стека?