@tumur4

Ошибка Runtime-Error, как исправить?

from collections import defaultdict
import sys
sys.setrecursionlimit(200)
temp = []
n = int(input())
numbers = [input().split() for i in range(int(n))]
for i,j in enumerate(numbers):
    for k, l in enumerate(j):
        if l == '1':
            temp.append([i + 1, k + 1])
graph = defaultdict(list)
for number in temp:
    if number[0] != number[1]:
        graph[int(number[0])].append(number[1])
cycle = False
used = {i: False for i in range(1, n+1)}

Color = [0] * (n + 1)
CycleFound = False
predki = [0] * (n + 1)
cycle = []
p = 0
def dfs(v):
    Color[v] = 1
    cycle.append(v)
    for u in graph[v]:
        if Color[u] == 0:
            predki.insert(u, v)
            dfs(u)
        elif Color[v] == 1 and u != predki[v]:
            global p
            while p < 1:
                global CycleFound
                CycleFound = True
                if v not in graph[cycle[0]]:
                    del cycle[0]
                print('YES')
                print(len(cycle))
                print(' '.join(map(str, cycle)))
                p += 1
    cycle.clear()
    Color[v] = 2

for i in range(1, n + 1):
    if Color[i] == 0:
        dfs(i)
if CycleFound == False:
    print('NO')

ЯКонтест выдает ошибку RE.
Формат ввода
В первой строке дано одно число n — количество вершин в графе ( 1 ≤ n ≤ 500 ). Далее в n строках задан сам граф матрицей смежности.

Формат вывода
Если в иcходном графе нет цикла, то выведите «NO». Иначе, в первой строке выведите «YES», во второй строке выведите число k — количество вершин в цикле, а в третьей строке выведите k различных чисел — номера вершин, которые принадлежат циклу в порядке обхода (обход можно начинать с любой вершины цикла). Если циклов несколько, то выведите любой.

ОШИБКА:
Traceback (most recent call last):
File "f68a00f8-de32-4961-a41b-d6a89720f012", line 45, in
dfs(i)
File "f68a00f8-de32-4961-a41b-d6a89720f012", line 28, in dfs
dfs(u)
File "f68a00f8-de32-4961-a41b-d6a89720f012", line 28, in dfs
dfs(u)
File "f68a00f8-de32-4961-a41b-d6a89720f012", line 28, in dfs
dfs(u)
[Previous line repeated 3 more times]
File "f68a00f8-de32-4961-a41b-d6a89720f012", line 34, in dfs
if v not in graph[cycle[0]]:
IndexError: list index out of range
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы