문제: https://www.acmicpc.net/problem/1260
목표:
이 문제는 dfs, bfs에 대한 이해가 중요한 것 같다.
 관련 정보가 들어간 url 은 https://joosjuliet.github.io/dfs_vs_bfs/ 이다
n, m, v = map(int, input().split())
vertexs = {}
for i in range(1, n+1):
    vertexs[i] = set()
for _ in range(m):
    a, b = map(int, input().split())
    vertexs[a].add(b)
    vertexs[b].add(a)
check = [False]*(n+1)
def dfs(n):
    print(n,end=' ')
    check[n] = True
    for k in sorted(vertexs[n]):
        if not check[k]:
            dfs(k)
dfs(v)
print()
check = [False]*(n+1)
# 이미 간 곳 확인
queue = [v]
check[v] = True
print(v,end=' ')
while queue:
    v = queue.pop(0)
    for u in sorted(vertexs[v]):
        if not check[u] :
            print(u,end=' ')
            queue.append(u)
            check[u] = True