Почему этот код не работает? Как так?

Условие: Команда Москвы на Всероссийской олимпиаде по информатике 2017 года оказалась настолько велика, что помещается только в 2 вагона. Некоторые школьники испытывают друг к другу такую личную неприязнь, что не могут есть, находясь в одном вагоне. Поскольку не есть в поезде нельзя (это противоречит СанПиНам), то участников олимпиады надо рассадить так, чтобы школьники, испытывающие взаимную неприязнь, ехали в разных вагонах. Если это невозможно, никто никуда не поедет.

Входные данные Первая строка входного файла содержит количество школьников N (1 ≤ N ≤ 10000) и количество взаимных неприязней M (1 ≤ M ≤ 100000). Следующие M строк содержат пары чисел, задающих номера участников, испытывающих взаимную неприязнь. Участники нумеруются с единицы.

Выходные данные В случае, если рассадить участников невозможно — выведите единственное число 0. Если же рассадка возможна, выведите в первой строке номера школьников, едущих в первом вагоне, во второй — едущих во втором вагоне. Первый школьник всегда должен ехать в первом вагоне. Школьник с меньшим номером должен находится в первом вагоне, если это возможно. Номера школьников в каждом из вагонов должны быть упорядочены по возрастанию.

Примеры входные данные

4 3
1 2
2 3
2 4

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

1 3 4 
2

Мой код:

n,m = map(int, input().split())
s = []
for i in range(0,n):
    s.append([])
for i in range(0,m):
    a,b = map(int,input().split())
    s[a-1].append(b)
    s[b-1].append(a)

v1 = set()
v2 = set()

v1.add(1)
for i in range(0,n):
    if (i+1) in v1:
        for j in s[i]:
            v2.add(j)
    elif (i+1) in v2:
        for j in s[i]:
            v1.add(j)
    else:
        v1.add(i+1)
        for j in s[i]:
            v2.add(j)

if v1 & v2 == set():
    print(*sorted(v1))
    print(*sorted(v2))
else:   
    v1 = set()
    v2 = set()
    
    v1.add(1)
    for i in range(0,n):
        if (i+1) in v1:
            for j in s[i]:
                v2.add(j)
        elif (i+1) in v2:
            for j in s[i]:
                v1.add(j)
        else:
            v2.add(i+1)
            for j in s[i]:
                v1.add(j)
    
    if v1 & v2 == set():
        print(*sorted(v1))
        print(*sorted(v2))
    else:
        print(0)

На информатиксе в протоколе написано "Неправильный формат вывода."


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

Автор решения: Chorkov

Для некоторых тестов, участники будут выведены в неверном порядке. Здесь: https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset сказано:

A set object is an unordered collection of...

Т.е. set имеет право менять порядок содержащихся элементов, по своему усмотрению, так чтобы обеспечить быстрый поиск.

Попробуйте

print(*sorted(v1))

P.S. еще ваш алгоритм дает неверный резульата на тесте

4 3
1 4
2 3
3 4
→ Ссылка