(Java) leetcode 2492. 두 도시 간 경로의 최소 점수

쉬운 목차

문제

https://leetcode.com/problems/minimum-score-of-a-path-between-two-cities/description/

두 도시 간 경로의 최소 점수 – LeetCode

이 실제 인터뷰 질문을 해결할 수 있습니까? 두 도시 간 경로의 최소 점수 – 1에서 n까지 번호가 매겨진 n개의 도시를 나타내는 양의 정수 n을 가져옵니다. 또한 도로(i) = (ai, bi, distancei)가 다음을 나타내는 도로의 2D 배열을 얻습니다.

leetcode.com

노드 1에서 n으로 연결되는 에지의 최소값을 찾는 문제

설명

에지 검색은 BFS 검색으로 구현됩니다.

해결책은 다음과 같습니다.

  1. 그래프를 이중 목록으로 구현하십시오.
  2. 모든 에지는 BFS 검색으로 검색됩니다.

예제 이미지에서 볼 수 있듯이 순환의 경우 이미 검색된 노드도 Edge를 확인해야 합니다. 이 점만 주의하세요.

암호

class Solution {
    ArrayList<ArrayList<int()>> g;
    public int minScore(int n, int()() roads) {
        g = new ArrayList<>();
        for(int i = 0 ;i < n+1;i ++){
            g.add(new ArrayList<>());
        }
        for(int x() : roads){
            g.get(x(0)).add(new int(){x(1), x(2)});
            g.get(x(1)).add(new int(){x(0), x(2)});
        }
        Queue<Integer> Q = new LinkedList<>();
        boolean v() = new boolean(n+1);
        int ans = Integer.MAX_VALUE;
        Q.offer(1);
        v(1) = true;
        while(!Q.isEmpty()){
            int nv = Q.poll();
            for(int x() : g.get(nv)){
                ans = Math.min(ans, x(1));
                if(!v(x(0))){
                    v(x(0)) = true;
                    Q.offer(x(0));
                }
            }
        }       
        return ans;
    }
}