백준 알고리즘/DFS, BFS

[백준 알고리즘] 1260번 DFS와 BFS - C

개발로 먹고 살자 2021. 11. 11. 11:14

#include<stdio.h>
#include<stdlib.h>
#include<queue>

using namespace std;

int graph[1001][1001] = {0};
int dfsVisited[1001] = {0};
int bfsVisited[1001] = {0};

void dfs(int v, int n) {
        dfsVisited[v] = 1;
        printf("%d ", v);

        for(int i = 1; i <= n; i++) {
                if(graph[v][i] == 1 && dfsVisited[i] == 0) {
                        dfs(i, n);
                }
        }
}

void bfs(int v, int n) {
        queue<int> q;

        printf("%d ", v);
        q.push(v);
        bfsVisited[v] = 1;

        while(!q.empty()) {
                v = q.front();
                q.pop();
                for(int i = 1; i <= n; i++) {
                        if(graph[v][i] == 1 && bfsVisited[i] == 0) {
                                printf("%d ", i);
                                q.push(i);
                                bfsVisited[i] = 1;
                        }
                }
        }

}
int main(int argc, char* argv[]) {

        int n, m, start;
        int x, y;

        scanf("%d%d%d", &n, &m, &start);

        for(int i = 0; i < m; i++) {
                scanf("%d%d", &x, &y);
                graph[x][y] = 1;
                graph[y][x] = 1;
        }

        dfs(start, n);
        printf("\n");
        bfs(start, n);
        return 0;
}