Почему этот код не работает? Как так?
Условие: Команда Москвы на Всероссийской олимпиаде по информатике 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 шт):
Для некоторых тестов, участники будут выведены в неверном порядке. Здесь: 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