📅  最后修改于: 2023-12-03 15:39:55.915000             🧑  作者: Mango
该问题关于无向图的深度优先遍历(DFS)和广度优先遍历(BFS)的代码实现。
void DFS(int s, vector<bool> &visited, vector<vector<int>> &adj) {
visited[s] = true;
cout << s << " ";
for (auto i : adj[s]) {
if (!visited[i]) {
DFS(i, visited, adj);
}
}
}
这里的adj
是一个邻接矩阵,用于表示一个无向图。
使用示例:
vector<vector<int>> adj(n);
vector<bool> visited(n, false);
DFS(starting_vertex, visited, adj);
void BFS(int s, vector<bool> &visited, vector<vector<int>> &adj) {
queue<int> q;
visited[s] = true;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
cout << u << " ";
for (auto i : adj[u]) {
if (!visited[i]) {
visited[i] = true;
q.push(i);
}
}
}
}
同样,这里的adj
也是一个邻接矩阵。
使用示例:
vector<vector<int>> adj(n);
vector<bool> visited(n, false);
BFS(starting_vertex, visited, adj);