풀이
bfs를 돌리자!
dfs도 돌리자!
코드
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
int n, m, v, chk[1001], gph[1001][1001];
void dfs(int now) {
chk[now] = 1;
printf("%d ", now);
for (int i = 1; i <= n; i++)
if (!chk[i] && gph[now][i]) dfs(i);
}
void bfs(int now) {
queue<int> que;
que.push(now);
chk[now] = 1;
while (!que.empty()) {
int now = que.front();
que.pop();
printf("%d ", now);
for (int i = 1; i <= n; ++i)
if (!chk[i] && gph[now][i]) que.push(i), chk[i] = 1;
}
}
int main() {
scanf("%d %d %d", &n, &m, &v);
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d %d", &u, &v);
gph[u][v] = gph[v][u]= 1;
}
dfs(v);
puts("");
memset(chk, 0, sizeof(chk));
bfs(v);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이