Easy_'s blog

By Easy_, 10 years ago, In Russian

Подскажите пожалуйста пример реализации 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 << " ";
			}
	}
}
  • Vote: I like it
  • +8
  • Vote: I do not like it