자료구조 시간에 배운대로 구현을 하면 된다.
#include <iostream>
#include <queue>
using namespace std;
int graph[1001][1001];
int n, m, start, x, y;
bool visited[1001] = {false};
void DFS(int s)
{
visited[s] = true;
cout << s << ' ';
for (int i = 1; i <= 1000; i++)
if(visited[i] == false && graph[s][i] == 1)
DFS(i);
}
void BFS(int s)
{
bool visited[1001] = {false};
queue<int> q;
q.push(s);
visited[s] = true;
while (!q.empty())
{
int v = q.front();
q.pop();
cout << v << ' ';
for (int i = 1; i <= 1000; i++)
if (graph[v][i] == 1 && visited[i] == false)
{
visited[i] = true;
q.push(i);
}
}
}
int main()
{
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
cin >> n >> m >> start;
for (int i = 0; i < m; i++)
{
cin >> x >> y;
graph[x][y] = 1;
graph[y][x] = 1;
}
DFS(start);
cout << endl;
BFS(start);
return 0;
}