hades

[Baekjoon] 1260๋ฒˆ: DFS์™€ BFS ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 1260๋ฒˆ: DFS์™€ BFS

hades1 2024. 7. 3. 20:24

๐Ÿฅ… ๋ฌธ์ œ

https://www.acmicpc.net/problem/1260

 

๐Ÿ” ์„ค๊ณ„

DFS์™€ BFS๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” ์ •์  ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ์œผ๋ฏ€๋กœ, ์—ฐ๊ฒฐํ•œ ์ •์ ์„ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 10000๊ฐœ์ด๋ฏ€๋กœ, ์–‘๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•˜๋ฉด ์ด ๊ฐ„์„ ์˜ ์ˆ˜๋Š” 20000๊ฐœ์ด๋‹ค. ์ •๋ ฌ์„ ํ•˜๋ฉด, O(NlgN)์ด๋ฏ€๋กœ ์‹œ๊ฐ„ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ‘Š ํ’€์ด

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cmath>
using namespace std;	
int n, m, v, a, b;
vector<vector<int>> adj_list(1001);
vector<bool> visited(1001);

void dfs(int cur_point){
	visited[cur_point] = true;
	cout << cur_point << " ";
	for (int i=0; i<adj_list[cur_point].size(); i++){
		int new_point = adj_list[cur_point][i];
		if (!visited[new_point]){
			dfs(new_point);
		}
	}	
}

void bfs(int start_point){
	queue<int> q;
	q.push(start_point);
	visited[start_point] = true;
	cout << start_point << " ";
	while (!q.empty()){
		int cur_point = q.front();
		q.pop();
		for (int i=0; i<adj_list[cur_point].size(); i++){
			int new_point = adj_list[cur_point][i];
			if (!visited[new_point]){
				visited[new_point] = true;
				q.push(new_point);
				cout << new_point << " ";
			}
		}
	}
}


int main() {
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);
	cin >> n >> m >> v;
	for (int i=0; i<m; i++){
		cin >> a >> b;
		adj_list[a].push_back(b);
		adj_list[b].push_back(a);
	}
	for (int i=1; i<=n; i++){
		sort(adj_list[i].begin(), adj_list[i].end());
	}
	dfs(v);
	visited = vector<bool>(1001);
	cout << "\n";
	bfs(v);
	return 0;
}

 

๐Ÿ“ ๋ฉ”๋ชจ

BFS๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ •์  ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ๋ฐฉ๋ฌธ ์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.