1260 : DFS와 BFS

풀이

bfs를 돌리자!

dfs도 돌리자!

코드

#include <stdio.h>
#include <queue>
#include <memory.h>
using namespace std;

int n, m, v;
bool chk[1001], gph[1001][1001];

void dfs(int now) {
	chk[now] = true;
	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] = true;
	while (!que.empty()) {
		int f = que.front(); que.pop();
		printf("%d ", f);
		for (int i = 1; i <= n; ++i)
			if (!chk[i] && gph[f][i]) que.push(i), chk[i] = true;
	}
}

int main() {
	scanf("%d %d %d", &n, &m, &v);
	
	for (int i = 0; i < m; ++i) {
		int a, b;
		scanf("%d %d", &a, &b);
		gph[a][b] = gph[b][a]= true;
	}

	dfs(v);
	printf("\n");
	memset(chk, false, 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