728x90
1260 DFS와 BFS

#include <bits/stdc++.h>
using namespace std;
vector<int> adj[10002];
vector<int> result_bfs;
vector<int> result_dfs;
bool visited[1002];
void dfs(int x)
{
visited[x] = true;
result_dfs.push_back(x);
for (int i = 0; i < adj[x].size(); ++i)
{
if (!visited[adj[x][i]])
dfs(adj[x][i]);
}
}
void bfs(int x)
{
queue<int> q;
q.push(x);
visited[x] = true;
while (!q.empty())
{
int tmp = q.front();
q.pop();
result_bfs.push_back(tmp);
for (int i = 0; i < adj[tmp].size(); ++i)
{
if (!visited[adj[tmp][i]])
{
q.push(adj[tmp][i]);
visited[adj[tmp][i]] = true;
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int node, edge, start;
cin >> node >> edge >> start;
for (int i = 0; i < edge; ++i)
{
int a, b;
cin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
for (int i = 1; i <= node; ++i)
{
sort(adj[i].begin(), adj[i].end());
}
bfs(start);
memset(visited, false, sizeof(visited));
dfs(start);
for (auto i : result_dfs)
cout << i << " ";
cout << "\\n";
for (auto i : result_bfs)
cout << i << " ";
return 0;
}
- DFS , BFS를 구현하는 문제.
- 전에 파이썬으로 풀었음에도 시간이 지나서 많이 애먹었다.
- 코드를 외운다기 보다는 개념을 숙지하고 그 개념을 토대로 코드를 짠다면 조금 더 편하게 다가갈 수 있지 않을까 생각한다.
728x90
'Study > Baekjoon' 카테고리의 다른 글
[백준/C++] 3182 한동이는 공부가 하기 싫어! (0) | 2024.03.02 |
---|---|
[백준/C++] 1012 유기농 배추 (0) | 2024.03.01 |
[백준/C++] 1620 나는야 포켓몬 마스터 이다솜 (0) | 2024.02.28 |
[백준/C++] 1003 피보나치 함수 (0) | 2024.02.26 |
[백준/C++] 1654 랜선자르기 (0) | 2024.02.26 |