📌  相关文章
📜  教资会网络 | UGC NET CS 2018 年 12 月 – II |问题 67(1)

📅  最后修改于: 2023-12-03 15:39:55.915000             🧑  作者: Mango

UGC NET CS 2018年12月-II 问题67

该问题关于无向图的深度优先遍历(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);