# 스택과 visited 리스트에 루트 노드 추가 visited = [v] # 작은 노드부터 탐색해야하기 때문에 정렬 stack.extend(reversed(adj[v]))
while stack: # 제일 위에 있는 노드 꺼내기 node = stack.pop() # 해당 노드가 방문하지 않은 노드일 경우 if node notin visited: # 해당 노드를 visited 리스트에 추가 visited.append(node) # 해당 노드의 자식노드를 스택에 추가 # 작은 노드부터 탐색해야하기 때문에 정렬 stack.extend(reversed(adj[node])) return visited
while queue: # 먼저 큐에 들어가있던 노드 꺼내기 node = queue.popleft() # 해당 노드가 방문하지 않은 노드일 경우 if node notin visited: # 해당 노드의 자식노드를 큐에 추가 queue += adj[node] # 해당 노드를 visited 리스트에 추가 visited.append(node)
return visited
N, M, V = (map(int, input().split()))
adj = [[] for _ in range(N+1)]
for _ in range(M): a, b = (map(int, input().split())) adj[a].append(b) adj[b].append(a)
# 정점 번호가 작은 순대로 정렬 adj[a].sort() adj[b].sort()
# 배열을 문자열로 변환 answer1 = " ".join(str(x) for x in dfs(V)) answer2 = " ".join(str(x) for x in bfs(V))