LeetCode-in-Java

2492. Minimum Score of a Path Between Two Cities

Medium

You are given a positive integer n representing n cities numbered from 1 to n. You are also given a 2D array roads where roads[i] = [ai, bi, distancei] indicates that there is a bidirectional road between cities ai and bi with a distance equal to distancei. The cities graph is not necessarily connected.

The score of a path between two cities is defined as the minimum distance of a road in this path.

Return the minimum possible score of a path between cities 1 and n.

Note:

Example 1:

Input: n = 4, roads = [[1,2,9],[2,3,6],[2,4,5],[1,4,7]]

Output: 5

Explanation: The path from city 1 to 4 with the minimum score is: 1 -> 2 -> 4. The score of this path is min(9,5) = 5. It can be shown that no other path has less score.

Example 2:

Input: n = 4, roads = [[1,2,2],[1,3,4],[3,4,7]]

Output: 2

Explanation: The path from city 1 to 4 with the minimum score is: 1 -> 2 -> 1 -> 3 -> 4. The score of this path is min(2,2,4,7) = 2.

Constraints:

Solution

import java.util.Arrays;

public class Solution {
    private int[] dsu;

    public int minScore(int n, int[][] roads) {
        dsu = new int[n + 1];
        int[] ans = new int[n + 1];
        for (int i = 0; i <= n; i++) {
            dsu[i] = i;
        }
        Arrays.fill(ans, Integer.MAX_VALUE);
        for (int[] r : roads) {
            int a = find(r[0]);
            int b = find(r[1]);
            dsu[a] = dsu[b];
            ans[a] = ans[b] = Math.min(r[2], Math.min(ans[a], ans[b]));
        }
        return ans[find(1)];
    }

    private int find(int i) {
        return dsu[i] == i ? i : find(dsu[i]);
    }
}