Построить компоненту связности

Дан неориентированный граф, возможно, с петлями и кратными ребрами. Необходимо построить компоненту связности, содержащую первую вершину. Вот мой код:

n, m = map(int, input().split())


def gen_adjacency_list(V, E):
    adjacency_list = [[] for _ in range(V)]
    for _ in range(E):
        v1, v2 = map(int, input().split())
        adjacency_list[v1].append(v2)
        adjacency_list[v2].append(v1)
    return adjacency_list


lister = gen_adjacency_list(n + 1, m)
visited = [False] * (n + 1)


def dfs(graph, visited1, num):
    visited1[num] = True
    for p in graph[num]:
        if not visited1[p]:
            dfs(graph, visited1, p)


dfs(lister, visited, 1)
visited = [i for i, v in enumerate(visited) if v]
print(len(visited))
print(*visited)

На одном из тестов (офк не знаю что за тест) ловлю ран тайм еррор.

Если изменю функцию dfs на эту:

def iterativeDFS(graph, discovered, v):
    stack = deque()
    stack.append(v)
    res = []
    while stack:
        v = stack.pop()
 
        if discovered[v]:
            continue
        discovered[v] = True
        res.append(v)
        
        adjList = graph[v][::-1]
        for i in range(len(adjList)):
            u = adjList[i]
            if not discovered[u]:
                stack.append(u)
    
    return sorted(res)

Ошибки не будет и пройдут все тесты. Что не так с рекурсивным вариантом?


Ответы (0 шт):