cgy12306

[백준 BoJ] 1260 - DFS와 BFS 본문

Algorithm/C++

[백준 BoJ] 1260 - DFS와 BFS

cgy12306 2021. 3. 25. 16:40
#include<iostream>
#include<string.h>
#include<queue>

using namespace std;

int arr[1001][1001] = { 0, };
int visit[1001];
int n, m;
queue<int> q;

void dfs(int v) {
	cout << v << " ";
	visit[v] = 1;

	for (int i = 1; i <= n; i++) {
		if (arr[v][i] == 1 && visit[i] == 0) {
			dfs(i);
		}
	}
	return;
}

void bfs(int v) {
	q.push(v);
	visit[v] = 1;
	while (!q.empty())
	{
		v = q.front();
		visit[v] = 1;
		cout << v << " ";
		q.pop();

		for (int i = 1; i <= n; i++) {
			if (arr[v][i] == 1 && visit[i] == 0) {
				q.push(i);
				visit[i] = 1;
			}
		}
	}

}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int v, x, y;
	// n : 정점의 개수, m : 간선의 개수, v : 시작할 정점의 번호
	cin >> n >> m >> v;

	for (int i = 0; i < m; i++) {
		cin >> x >> y;
		arr[x][y] = 1;
		arr[y][x] = 1;
	}

	dfs(v);
	cout << "\n";
	memset(visit, 0, sizeof(visit));
	bfs(v);

}

'Algorithm > C++' 카테고리의 다른 글

[백준 BoJ] 11726 - 2xn 타일링  (0) 2021.03.25
[백준 BoJ] 1463 - 1로 만들기  (0) 2021.03.25
[백준 BoJ] 9095 - 1, 2, 3 더하기  (0) 2021.03.25
[백준 BoJ] 1476 - 날짜 계산  (0) 2021.03.25
[백준 BoJ] 1551 - 수열의 변화  (0) 2021.03.25
Comments