задача на матрицу смежности

Входные данные Во входном файле записано число ?

(1 ≤ ? ≤ 50000) - количество вершин в графе. В следующих ?

строках записан граф в виде списков смежности: в i-ой строке, в порядке возрастания, записаны номера вершин, в которые идут ребра из ? i -ой вершины. Нумерация начинается с единицы. Гарантируется, что ребер в графе не более 50000.

Выходные данные Выведите развернутый граф в том же формате, что и исходный.

Пример:

входные данные

4
2 3
3

2

выходные данные:

4

1 4
1 2


Я написал следующий код:

n = int(input())
pairs = [list(map(int, input().split())) for i in range(n)]
lst = [[0] * n for _ in range(n)]
for i in range(n):
    for el in pairs[i]:
        lst[el - 1][i] = 1
pairs = [[] for i in range(n)]
for i in range(n):
    for j in range(n):
        if lst[i][j] == 1:
            pairs[i].append(j + 1)
print(n)
for rows in pairs:
    for el in rows:
        print(el, end=' ')
    print()

Если вам будет удобнее, то вот ссылка на задачу: https://informatics.mccme.ru/mod/statements/view.php?id=359&chapterid=111539#1 Код выше проходит только 9 тестов: Ошибка во время выполнения программы - вот что пишут в протоколе на 7, 8, 9, 13 тестах. Если вы найдете ошибку в моем коде или же напишите что-то свое, что проходит все тесты, то я буду очень благодарен.


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

Автор решения: haskiindahouse
n = int(input())
pairs = [list(map(int, input().split())) for i in range(n)]
lst = [[] * n for _ in range(n)]
for i in range(n):
    for el in pairs[i]:
        lst[el - 1].append(i + 1)
print(n)
for rows in lst:
    rows.sort()
    print(*rows)
→ Ссылка