Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

На счет кода на питоне

Alan Freyman Ученик (35), открыт 4 дня назад
На входе есть 2 числа, между ними есть проблем типа(2 3). Для обработки инпута я написал вот это
 query = [int(a) for a in input().split()] 
a, b = query[0], query[1]
Почемуто вторая сторока вызывает ошибку List index out of range. Почему так вроде ничего за границу не выходит же?
Вот полный код
 import queue 

def bfs(adj, a, b, n):
visited = [False] * n
que = queue.Queue()
visited[a] = True
que.put(a)

while not que.empty():
curr = que.get()
if curr == b:
return True
for el in adj[curr]:
if not visited[el]:
visited[el] = True
que.put(el)
return False



inp = [int(a) for a in input().split()]
n, m = inp[0], inp[1]


adj = [[] for _ in range(n)]

for _ in range(m):
inp = [int(a) for a in input().split()]
x, y = inp[0], inp[1]
adj[x - 1].append(y - 1)
adj[y - 1].append(x - 1)


query = [int(a) for a in input().split()]
a, b = query[0], query[1]

if bfs(adj, a - 1, b - 1, n):
print("YES")
else:
print("NO")

1 ответ
Андрей Высший разум (462142) 4 дня назад
Если действительно вводится два числа в одной строке через пробел, то твой код НЕ МОЖЕТ вызвать ошибку List index out of range в процессе ввода. Эта ошибка возникнет, только если в строке содержится одно число.

Другое дело, что у тебя весь код - работа с массивами. И ты уверен, что ошибка происходит именно в указанном тобой месте?

P.S. Стандартно ввод в одной строке нескольких чисел, разделённых пробелами, в Python записывается так:
 a, b = map(int, input().split()) 
Но проблему одного числа в строке это не решит.
Похожие вопросы