【每日一题】3243. 新增道路查询后的最短距离 I
给你一个整数 n 和一个二维整数数组 queries。
有 n 个城市,编号从 0 到 n - 1。初始时,每个城市 i 都有一条单向道路通往城市 i + 1( 0 <= i < n - 1)。
queries[i] = [ui, vi] 表示新建一条从城市 ui 到城市 vi 的单向道路。每次查询后,你需要找到从城市 0 到城市 n - 1 的最短路径的长度。
返回一个数组 answer,对于范围 [0, queries.length - 1] 中的每个 i,answer[i] 是处理完前 i + 1 个查询后,从城市 0 到城市 n - 1 的最短路径的长度。
class Solution: def shortestDistanceAfterQueries(self, n: int, queries: List[List[int]]) -> List[int]: 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, neighbors): dist = [-1 for _ in range(n)] dist[0] = 0 q = deque([0]) while len(q) > 0: x = q.popleft() for y in neighbors[x]: if dist[y]>=0: continue q.append(y) dist[y] = dist[x] + 1 return dist[n-1]

浙公网安备 33010602011771号