Построить компоненту связности
Дан неориентированный граф, возможно, с петлями и кратными ребрами. Необходимо построить компоненту связности, содержащую первую вершину. Вот мой код:
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)
Ошибки не будет и пройдут все тесты. Что не так с рекурсивным вариантом?