Исправление в стратегии DFS - PullRequest
0 голосов
/ 07 июля 2019

Я попытался сделать DFS в первый раз, и это код, который я придумал.Может кто-нибудь подсказать, почему мой код DFS неверен?

void DFS(vector<vector<int>>& adj, vector<bool>& visited, int x) {
    if (!visited[x]) {
        visited[x] = true;
        cout << x << " ";
        for (int i = 0; i < adj[x].size(); i++) {
            DFS(adj, visited, adj[x][i]);
        }
    }
}

1 Ответ

1 голос
/ 09 июля 2019

Вы должны сбросить вас visited перед выходом из узла. В противном случае вы посещаете каждый узел только один раз

В конце условия if нужно добавить visited[x] = false

...