문제풀이(JAVA)
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
boolean[] visited = new boolean[n+1];
boolean[][] graph = new boolean[n+1][n+1];
for(int i = 0; i<m;i++) {
st = new StringTokenizer(br.readLine());
int node1 = Integer.parseInt(st.nextToken());
int node2 = Integer.parseInt(st.nextToken());
graph[node1][node2] = true;
graph[node2][node1] = true;
}
dfs(visited, graph, v);
System.out.println();
visited = new boolean[n+1];
bfs(visited, graph, v);
}
public static void dfs(boolean[] visited, boolean[][] graph, int node) {
visited[node] = true;
System.out.print(node+" ");
for(int i = 1; i < visited.length; i++) {
if(graph[node][i] == true && visited[i] == false) {
dfs(visited, graph, i);
}
}
}
public static void bfs(boolean[] visited, boolean[][] graph, int node) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(node);
visited[node] = true;
while (!queue.isEmpty()) {
int visitNode = queue.poll();
System.out.print(visitNode+" ");
for(int i = 1; i < visited.length; i++) {
if(graph[visitNode][i] == true && visited[i] == false) {
queue.offer(i);
visited[i] = true;
}
}
}
}
}