코드 복사/붙여넣기 하는 당신이 아름답습니다.

1260 : DFS와 BFS

풀이

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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-02-13 21:20

Read more posts by this author