You are given an integer n and a 2D integer array queries.
There are n cities numbered from 0 to n - 1. Initially, there is a unidirectional road from city i to city i + 1 for all 0 <= i < n - 1.
queries[i] = [uᵢ, vᵢ] represents the addition of a new unidirectional road from city uᵢ to city vᵢ. After each query, you need to find the length of the shortest path from city 0 to city n - 1.
Return an array answer where for each i in the range [0, queries.length - 1], answer[i] is the length of the shortest path from city 0 to city n - 1 after processing the firsti + 1 queries.
classSolution:defshortestDistanceAfterQueries(self,n:int,queries:list[list[int]])->list[int]:sd=[n-i-1foriinrange(n)]dests=[[i+1]foriinrange(n-1)]# dests[i] is a list of cities which has direct road from city i.results=[1]*len(queries)forq,(u,v)inenumerate(queries):dests[u].append(v)if(d:=sd[v]+1)<sd[u]:sd[u]=dforiinrange(u-1,-1,-1):sd[i]=min(sd[i],min(sd[j]+1forjindests[i]ifj<=u))results[q]=sd[0]returnresults
评论需要 JavaScript。