Подскажите пожалуйста пример реализации dfs без рекурсии. Вот попробовал реализовать через стэк, но как-то криво работает..
int G[N][N]; // Матрица смежностей
...
void dfs(int p)
{
stack<int> S;
vector<int> v(N);
int t;
S.push(p);
v[p]++;
cout << p + 1 << " ";
while(!S.empty())
{
t = S.top();
S.pop();
for(int i = N - 1; i > 0; i--)
if(G[t][i] && !v[i])
{
S.push(i);
v[i]++;
cout << i + 1 << " ";
}
}
}