После рекурсивного вызова вы должны заново вставить ранее удаленные ребра и избавиться от разрыва.
void DFS(Graph &G, int x)
{
int i;
Push(x);
for (i = 0; i < v; i++)
if (G[i][x] > 0)
{
G[i][x] *= -1;
G[x][i] *= -1;
DFS(G, i);
G[i][x] *= -1;
G[x][i] *= -1;
}
}
Все, что вам сейчас нужно, это способ выяснить, когда вы сгенерировали полный цикл, чтобы вы могли распечатать его и перейти к следующему. Это происходит, когда вы удаляете все грани своего графика.