문제
https://www.acmicpc.net/problem/1260
접근 방법
주어진 그래프에 대하여 dfs와 bfs의 수행 결과를 출력하는 간단한 문제이다.
그래프는 vector를 통해 구현하였고
시작점으로부터 dfs와 bfs를 수행하여 방문된 점을 출력하였다.
코드
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n, m, v, x, y;
bool check[1001];
vector<int> vec[1001];
queue<int> que;
void dfs(int start) {
cout << start << ' ';
check[start] = 1;
for (int i = 0; i < vec[start].size(); i++) {
if (check[vec[start][i]] == 0) {
dfs(vec[start][i]);
}
}
}
void bfs(int start) {
check[start] = 1;
que.push(start);
while (!que.empty()) {
int now = que.front();
cout << now << ' ';
que.pop();
for (int i = 0; i < vec[now].size(); i++) {
if (check[vec[now][i]] == 0) {
que.push(vec[now][i]);
check[vec[now][i]] = 1;
}
}
}
}
int main() {
cin >> n >> m >> v;
for (int i = 0; i < m; i++) {
cin >> x >> y;
vec[x].push_back(y);
vec[y].push_back(x);
}
for (int i = 1; i <= n; i++) {
sort(vec[i].begin(), vec[i].end());
}
dfs(v);
cout << '\n';
fill(check, check + 1001, 0);
bfs(v);
}
'백준' 카테고리의 다른 글
[백준] C++ 1991번 트리 순회 (0) | 2023.02.21 |
---|---|
[백준] C++ 1389번 케빈 베이컨의 6단계 법칙 (0) | 2023.02.12 |
[백준] C++ 2257번 화학식량 (0) | 2023.02.04 |
[백준] C++ 1074번 Z (0) | 2023.02.03 |
[백준] C++ 17219번 비밀번호 찾기 (0) | 2023.02.02 |