https://www.acmicpc.net/problem/1260
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include "string.h"
using namespace std;
int N, M, V;
int node[1001][1001];
int visited[1001];
void dfs(int vertex) {
cout << vertex << " ";
visited[vertex] = 1;
for (int i = 1; i <= N; i++) {
if(visited[i] ==0 && node[vertex][i]==1)
dfs(i);
}
}
> void bfs(int vertex) {
queue<int> q;
q.push(vertex);
visited[vertex] = 1;
while (!q.empty()) {
int front = q.front();
q.pop();
cout << front << " ";
for (int i = 1; i <= N; i++) {
if (visited[i] == 0 && node[front][i] == 1) {
q.push(i);
visited[i] = 1;
}
}
}
}
int main() {
cin >> N >> M >> V;
for (int i = 0; i < M; i++) {
int from;
int to;
cin >> from >> to;
node[from][to] = 1;
node[to][from] = 1;
}
dfs(V);
memset(visited, 0, sizeof(visited));
cout << endl;
bfs(V);
}
dfs
재귀가 중첩될수록 뇌디버깅 힘들어짐
bfs
큐에 넣는순간(탐색대상이 처리중상태로변경) visited 체크해줘야함.
while문 시작 전, 초항처리를 해줘야만 함