Поиск в глубину
Дан неориентированный граф, возможно, с петлями и кратными ребрами. Необходимо построить компоненту связности, содержащую вершину с номером 1.
Петля в графе - это ребро, которое соединяет вершину с самой собой. Кратные рёбра в графе - это ребра, которые соединяют одну и ту же пару вершин.
Компонента связности в неориентированном графе - это подмножество вершин, таких что все вершины достижимы друг из друга.
Формат ввода В первой строке записаны два целых числа N - количество вершин и M - количество ребер графа
M строках перечислены ребра — пары чисел, определяющие номера вершин, которые соединяют ребра. Далее может идти произвольное количество пустых строк.
Формат вывода В первую строку выходного файла выведите число K — количество вершин в компоненте связности. Во вторую строку выведите K целых чисел — вершины компоненты связности, перечисленные в порядке возрастания номеров.
Решение
def dfs(v, graph, visited, component):
visited.add(v)
component.append(v)
for neighbor in graph[v]:
if neighbor not in visited:
dfs(neighbor, graph, visited, component)
def main():
from collections import defaultdict
points, edges = map(int, input().strip().split())
graph = defaultdict(list)
for i in range(edges):
p, q = map(int, input().strip().split())
graph[p].append(q)
graph[q].append(p)
visited = set()
components = []
for v in range(1, points + 1):
if v not in visited:
component = []
dfs(v, graph, visited, component)
if component:
components.append(component)
if len(components) > 0 and len(components[0]) > 0:
component = sorted(components[0])
print(len(component))
print(' '.join(map(str, component)))
if __name__ == "__main__":
main()
Однако при проверке решения почему - то ошибка исполнения
Когда ввожу данные вручную считает нормально. Подскажите, пожалуйста, в чём ошибка?