给定一个无向图,图的节点编号从0到n-1,图的边以邻接表的形式给出。下面的程序使用深度优先搜索(DFS)遍历该图,并输出遍历的节点顺序。横线处应该填入的是()
1 #include <iostream> 2 #include <vector> 3 #include <stack> 4 using namespace std; 5 6 void DFS(int start, vector<vector<int>>& graph, vector<bool>& visited) { 7 stack<int> s; 8 s.push(start); 9 visited[start] = true; 10 11 while (!s.empty()) { 12 int node = s.top(); 13 s.pop(); 14 cout << node << " "; // 输出当前节点 15 16 // 遍历邻接节点 17 for (int neighbor : graph[node]) { 18 if (!visited[neighbor]) { 19 __________________ 20 __________________ 21 22 } 23 } 24 } 25 } 26 27 int main() { 28 int n, m; 29 cin >> n >> m; 30 31 vector<vector<int>> graph(n); 32 for (int i = 0; i < m; i++) { 33 int u, v; 34 cin >> u >> v; 35 graph[u].push_back(v); 36 graph[v].push_back(u); 37 } 38 39 40 vector<bool> visited(n, false); 41 42 // 从节点 0 开始DFS遍历 43 DFS(0, graph, visited); 44 45 return 0; 46 }
1 visited[neighbor] = true; 2 s.push(neighbor-1);
1 visited[neighbor] = true; 2 s.push(neighbor+1);
1 visited[neighbor] = false; 2 s.push(neighbor);
1 visited[neighbor] = true; 2 s.push(neighbor);