[백준 알고리즘] 1260번 DFS와 BFS - C
#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;
}