BOJ 1260 BFS와 DFS c++

백준 1260 BFS와 DFS c++


#include <bits/stdc++.h>
using namespace std;

int v, e, start;
vector<int> adj[1005];
bool vis[1005];

void dfs(int cur) { //cur은 방문한 adj[]의 index
    cout << cur << ' ';
    for (int i = 0; i < adj[cur].size(); i++) {
        int nxt = adj[cur][i];
        if (vis[nxt])
            continue;
        vis[nxt] = true;
        dfs(nxt);
    }
}

void bfs() {
    queue<int> Q;
    Q.push(start);
    vis[start] = true;
    while (!Q.empty()) {
        int cur = Q.front();
        Q.pop();
        cout << cur << ' ';
        for (int i = 0; i < adj[cur].size(); i++) {
            int nxt = adj[cur][i];
            if (vis[nxt])
                continue;
            Q.push(nxt);
            vis[nxt] = true;
        }
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int a, b;
    cin >> v >> e >> start;
    while (e--) {
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    for (int i = 1; i <= v; i++)
        sort(adj[i].begin(), adj[i].end());
    vis[start] = true;
    dfs(start);
    cout << '\n';
    fill(vis, vis + v + 1, false);
    bfs();
}

분류 : 그래프 - BFS, DFS


'Algorithm' 카테고리의 다른 글

BOJ 10807 개수 세기 c++  (0) 2020.08.14
BOJ 1406 c++ 에디터  (0) 2020.07.27
BOJ 11724 c++ 연결 요소의 개수  (0) 2020.07.22
C++ 이진 탐색 STL binary_search, upper_bound, lower_bound  (0) 2020.07.18
BOJ 10816 c++  (0) 2020.07.18
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom