Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int ( input() )
- a = [ None ] * n
- # Читаем матрицу смежности
- for i in range(n):
- a[i] = list( map(int, input().split() ) )
- u,v = map(int, input().split() )
- # Уменьшаем индексы, чтобы работать с номерами [0,n-1]
- u -= 1
- v -= 1
- #Очередь и функции для работы с ней
- q = [0] * n
- l = 0 # Первый элемент очереди
- r = 0 # Номер элемента после последнего
- def push(x):
- global q,l,r
- q[r] = x
- r+=1
- def pop():
- global q,l,r
- res = q[l]
- l+=1
- return res
- def isEmpty():
- global q,l,r
- return l>=r
- # Массив, в котором отмечаем вершины, которые были в очереди
- used = [False] * n
- # Массив, в котором сохраняем расстояние до вершин
- d = [ -1 ] *n
- push(u)
- used[u] = True
- d[u] = 0
- while not isEmpty():
- c = pop()
- #перебираем соседей
- for i in range(n):
- # Если есть ребро и вершину ещё не обработали
- if a[c][i] == 1 and not used[i]:
- #Добавляем в очередь вершину i
- push(i)
- used[i] = True
- d[i] = d[c] + 1
- print(d[v])
Advertisement
Add Comment
Please, Sign In to add comment