반응형
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
vector <int> maps[1001];
void dfs(int v){
stack <int> s;
int visited[1001] = {0,};
s.push(v);
while(!s.empty()){
int now = s.top();
if(visited[now] == 0){
cout << now << " ";
}
visited[now] = 1;
s.pop();
for(int i=maps[now].size()-1; i>=0; i--){
if(visited[maps[now].at(i)] == 0){
s.push(maps[now].at(i));
}
}
}
}
void bfs(int v){
queue <int> q;
int visited[1001] = {0,};
q.push(v);
while(!q.empty()){
int now = q.front();
if(visited[now] == 0){
cout << now << " ";
}
visited[now] = 1;
q.pop();
for(int i=0; i<maps[now].size(); i++){
if(visited[maps[now].at(i)] == 0){
q.push(maps[now].at(i));
}
}
}
}
int main(){
int n,m,v;
int node1, node2;
cin >> n >> m >> v;
for(int i=0; i<m; i++){
cin >> node1 >> node2;
maps[node1].push_back(node2);
maps[node2].push_back(node1);
}
for(int i=1; i<n+1; i++){
sort(maps[i].begin(), maps[i].end());
}
dfs(v);
cout << endl;
bfs(v);
}
설명
단순한 dfs와 bfs를 구현하는 문제이다. 필자의 경우 dfs는 스택으로 bfs는 큐로 구현을 하였다.
문제점
각 탐색 방법을 잘 구현한 것 같은데 왜 틀리나해서 봤더니 인접리스트 정렬을 안해주어서 다시 정렬을 해주었다.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 1003번: 피보나치 함수 C++ 코드(DP, 다이나믹 프로그래밍) (0) | 2023.03.14 |
---|---|
백준 23814번: 아 저는 볶음밥이요 C++코드(수학) (0) | 2021.12.27 |
백준 1476번: 날짜 계산 C++코드(브루트포스, Bruteforce) (0) | 2021.12.21 |
백준 10819번: 차이를 최대로 C++ 코드(브루트포스, Bruteforce) (0) | 2021.11.19 |
백준 2512번: 예산 C++코드(이진 탐색) (0) | 2021.11.07 |