[백준 C++] 1260 : DFS와 BFSCSE/코딩 문제풀이2024. 11. 8. 19:41
Table of Contents
https://www.acmicpc.net/problem/1260
주어진 입력에 맞춰 DFS와 BFS로 방문하는 순서 그대로 출력하면 되는 문제이다.
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
bool visited[1001];
vector<int> graph[1001];
void solution_dfs(int start)
{
visited[start] = true;
cout << start << " ";
for (int i = 0; i < graph[start].size(); i++)
{
int next = graph[start].at(i);
if (!visited[next])
solution_dfs(next);
}
}
void solution_bfs(int start)
{
queue<int> que;
que.push(start);
visited[start] = true;
while (!que.empty())
{
int corrent = que.front();
que.pop();
cout << corrent << " ";
for (int i = 0; i < graph[corrent].size(); i++)
{
int next = graph[corrent].at(i);
if (!visited[next])
{
que.push(next);
visited[next] = true;
}
}
}
}
int main()
{
int N, M, V = 1;
cin >> N >> M >> V;
for (int i = 0; i < M; i++)
{
int v1, v2;
cin >> v1 >> v2;
graph[v1].push_back(v2);
graph[v2].push_back(v1);
}
for (int i = 1; i < 1001; i++)
sort(graph[i].begin(), graph[i].end());
solution_dfs(V);
cout << endl;
for (int i = 0; i < 1001; i++)
visited[i] = false;
solution_bfs(V);
cout << endl;
return 0;
}
번호가 작은 것부터 방문하므로 sort로 정렬해주었다.
DFS는 재귀 방식, BFS는 큐를 이용해 구현하였다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 14889 : 스타트와 링크 (0) | 2024.11.09 |
---|---|
[백준 C++] 14888 : 연산자 끼워넣기 (0) | 2024.11.08 |
[프로그래머스 C++] 동영상 재생기 (0) | 2024.09.29 |
[프로그래머스 C++] 숫자 짝꿍 (0) | 2024.06.10 |
[프로그래머스 C++] 혼자 놀기의 달인 (0) | 2024.06.10 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!