3243. Shortest Distance After Road Addition Queries I
Difficulty: Medium
Topics: Array, Breadth-First Search, Graph
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] = [ui, vi] represents the addition of a new unidirectional road from city ui to city vi. 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 first i 1 queries.
Example 1:
Example 2:
Constraints:
Hint:
Solution:
We need to simulate adding roads between cities and calculate the shortest path from city 0 to city n - 1 after each road addition. Given the constraints and the nature of the problem, we can use Breadth-First Search (BFS) for unweighted graphs.
Graph Representation:
Shortest Path Calculation (BFS):
Iterating over Queries:
Efficiency:
Let's implement this solution in PHP: 3243. Shortest Distance After Road Addition Queries I
Explanation:
Graph Initialization:
- An adjacency list graph is used to represent the cities and roads.
- Initially, roads exist only between consecutive cities (i to i 1).
BFS Function:
- BFS is used to compute the shortest distance from city 0 to city n - 1. We maintain a queue for BFS and an array distances to store the minimum number of roads (edges) to reach each city.
- Initially, the distance to city 0 is set to 0, and all other cities have a distance of infinity (PHP_INT_MAX).
- As we process each city in the BFS queue, we update the distances for its neighboring cities and continue until all reachable cities are visited.
Query Processing:
- For each query, the new road is added to the graph (u -> v).
- BFS is called to calculate the shortest path from city 0 to city n-1 after the update.
- The result of BFS is stored in the result array.
Output:
- The result array contains the shortest path lengths after each query.
Time Complexity:
- Each BFS takes O(n m), where n is the number of cities and m is the number of roads. Since the number of queries is q, the overall time complexity is O(q * (n m)), which should be efficient for the given constraints.
Example Walkthrough:
For the input n = 5 and queries = [[2, 4], [0, 2], [0, 4]]:
Thus, the output is [3, 2, 1].
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks ?. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
The above is the detailed content of Shortest Distance After Road Addition Queries I. For more information, please follow other related articles on the PHP Chinese website!