DFS BFS
vertices, edges, start = input().split()
vertices = int(vertices)
edges = int(edges)
visited = {}
edgeList = {}
for _ in range(edges):
new = input().split()
if new[0] in edgeList:
edgeList[new[0]].append(new[1])
else:
edgeList[new[0]] = [new[1]]
if new[1] in edgeList:
edgeList[new[1]].append(new[0])
else:
edgeList[new[1]] = [new[0]]
for key in edgeList.keys():
visited[key] = False
def bfs():
done = []
todo = [start]
while todo:
curr = todo.pop(0)
for node_to in edgeList[curr]:
if node_to not in todo:
todo.append(node_to)
done.append(curr)
if len(done) == vertices:
print(" ".join(done))
break
def dfs(start):
result = [start]
visited[start] = True
for node_to in edgeList[start]:
if visited[node_to] == False:
result.extend(dfs(node_to))
return result
print(" ".join(dfs(start)))
bfs()