본문 바로가기

Study/algorithms

[백준] 1260. DFS와 BFS

반응형

https://www.acmicpc.net/problem/1260

문제설명

dfs와 bfs 를 구현하여 방문 노드 순서대로 노드 값을 출력하는 것이다.

 

입력

4 5 1
1 2
1 3
1 4
2 4
3 4

출력

1 2 4 3
1 2 3 4

나의 사고과정

사고과정은 없다. 외울정도로 많이 해봤던 것이다.

소스코드

 

C++

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
int n, m, start;
int tree[1001][1001] = {0,};
int visit[1001] = {0,};
void dfs(int v) {
    visit[v] = 1;
    printf("%d ", v);
    for (int i = 1; i <= 1000; i++) {
        if (tree[v][i] == 1 && visit[i] != 1) {
            dfs(i);
        }
    }
}

void bfs(int v) {
    queue<int> q;
    q.push(v);
    visit[v] = 1;

    while (!q.empty()) {
        int c = q.front(); q.pop();
        printf("%d ", c);
        for (int i = 1; i <= 1000; i++) {
            if (tree[c][i] == 1 && visit[i] != 1) {
                q.push(i);
                visit[i] = 1;
            }
        }
    }
}
int main() {
    scanf("%d %d %d", &n, &m, &start);
    for (int i = 0; i < m; i++) {
        int a, b; scanf("%d %d", &a, &b);
        tree[a][b] = 1;
        tree[b][a] = 1;
    }
    dfs(start); printf("\n");
    memset(visit, 0, sizeof(visit));
    bfs(start);
}

결과

'Study > algorithms' 카테고리의 다른 글

백준 14225 부분수열의 합  (0) 2022.07.14
[백준] 2630. 색종이 만들기  (0) 2020.03.15
[백준] 1021 회전하는 큐  (0) 2020.03.08
[백준] 10866 덱  (0) 2020.03.07
[백준] 1966 프린터 큐  (0) 2020.03.07