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()

results matching ""

    No results matching ""