【每日一题】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] 中的每个 ianswer[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]

 

posted @ 2024-11-19 23:09  xiaoxinlong  阅读(3)  评论(0编辑  收藏  举报