class Solution:
def shortestDistanceAfterQueries(self, n: int, queries):
neighbors = [[i + 1] for i in range(n)]
neighbors[-1] = []
res = []
for [u, v] in queries:
neighbors[u].append(v)
res.append(self.bfs(n, neighbors))
return res
def bfs(self, n: int, neighbors):
from collections import deque
#记录从0到N的最短路径
dist = [-1] * n
dist[0] = 0
#指针,记录当前要赋的x值,即查找值
q = deque([0])
while (len(q)) > 0:
#横坐标x值
x = q.popleft()
#纵坐标y值
for y in neighbors[x]:
if dist[y] >= 0:
continue
q.append(y)
#X和Y建立连接
dist[y] = dist[x] + 1
return dist[n - 1]
if __name__ == '__main__':
n = 5
queries = [[2, 4], [0, 2], [0, 4]]
solution = Solution()
res = solution.shortestDistanceAfterQueries(n, queries)
print("##########res:##########", res)