반응형
DFS와 BFS의 구현을 요구하는 간단한 문제다.
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
int N, M, V;
vector<int> graph[1001];
bool visit[1001];
void BFS(int idx) {
memset(visit, false, sizeof(visit));
queue<int> q;
q.push(idx);
visit[idx]=true;
while(!q.empty()){
int now = q.front();
q.pop();
cout << now << " ";
for(int i=0; i<graph[now].size(); i++){
int next=graph[now][i];
if(!visit[next]){
q.push(next);
visit[next]=true;
}
}
}
}
void DFS(int idx) {
visit[idx]=true;
cout << idx << " ";
for(int i=0; i<graph[idx].size(); i++){
int next=graph[idx][i];
if(!visit[next]) DFS(next);
}
}
int main(void){
cin >> N >> M >> V;
for(int i=0; i<M; i++) {
int x, y;
cin >> x >> y;
graph[x].push_back(y);
graph[y].push_back(x);
}
for(int i=1; i<=N; i++) sort(graph[i].begin(), graph[i].end());
DFS(V);
cout << "\n";
BFS(V);
}
'PS' 카테고리의 다른 글
[PS] 백준 7576번 - 토마토 (0) | 2023.05.16 |
---|---|
[PS] 백준 1012번 - 유기농 배추 (1) | 2023.05.16 |
[PS] 백준 2667번 - 단지번호붙이기 (0) | 2023.05.16 |
[PS] 백준 2606번 - 바이러스 (0) | 2023.05.16 |
[PS] 백준 2178번 - 미로 탐색 (0) | 2023.05.16 |