Skip to content

Conversation

@kokeunho
Copy link
Collaborator

@kokeunho kokeunho commented Aug 2, 2025

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

[BOJ] ๋ฉด์ ‘๋ณด๋Š” ์Šน๋ฒ”์ด๋„ค https://www.acmicpc.net/problem/17835

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

1h 30min

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

์ด๋ฒˆ์—” ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ํ‘ผ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

๋„์‹œ๋Š” 100,000๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฉด์ ‘์žฅ์˜ ๊ฐœ์ˆ˜๋„ ๊ทธ๋งŒํผ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
๊ฐ ๋„์‹œ๋กœ๋ถ€ํ„ฐ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฉด์ ‘์žฅ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฉด์ ‘์žฅ๋“ค๋กœ๋ถ€ํ„ฐ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ตœ์žฅ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์ธ๋ฐ์š”.
๋ฉด์ ‘์žฅ๋“ค๋กœ๋ถ€ํ„ฐ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
์ž…๋ ฅ ๋ฐ›์€ ๊ฐ„์„ ์„ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๊นŒ ์–ธ๊ธ‰ํ•œ๋Œ€๋กœ ๋ฉด์ ‘์žฅ์˜ ๊ฐœ์ˆ˜๋„ ๋„์‹œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
๋ฉด์ ‘์žฅ๋งˆ๋‹ค ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ถœ๋ฐœ์ ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ต์ˆ™ํ•œ๋ฐ
์ถœ๋ฐœ์ ์„ ํ•œ๋ฒˆ์— ๋„ฃ์–ด ์—ฌ๋Ÿฌ ์‹œ์ž‘์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๊ตฌํ•œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ์™€ ๋„์‹œ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

์—ฌ๋Ÿฌ ์‹œ์ž‘์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋‹ค์ค‘ ์‹œ์ž‘์  ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

Copy link
Collaborator

@wnsmir wnsmir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ง€๋ฐฉ๋Ÿฌ ์ž…์žฅ์—์„œ ๊ต‰์žฅํžˆ ๋”ฐ์Šคํ•œ ๋ฌธ์ œ๋„ค์š”,,

๋ฌธ์ œ๋ฅผ ์ฝ์ž๋งˆ์ž ๋ฐ”๋กœ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ๋– ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ ์ƒ๊ฐ์ด ํ˜๋Ÿฌ๊ฐ€๋Š”๋Œ€๋กœ ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ๊ฐ๋„์‹œ์—์„œ ๋ฉด์ ‘์žฅ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ฒŒ๋˜๋ฉด
1%์ด์ƒ์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ƒ์€ํ–ˆ์ง€๋งŒ,,)

์ƒ๊ฐ์„ ์ข€ ๋” ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋ฉด์ ‘์žฅ๋“ค์—์„œ ๊ฐ๋„์‹œ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋‘ ๊ตฌํ•ด๋‘๊ณ , ์ด๋ฅผ ์ €์žฅํ•ด๋‘” ๋ฐฐ์—ด์—์„œ ๋„์‹œ๋ฒˆํ˜ธ์™€ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

ํ•œ๊ฐ€์ง€ ์ƒ๊ฐํ•ด์•ผํ–ˆ๋˜๊ฑด
๋ฌธ์ œ๋Š” ๋‹จ๋ฐฉํ–ฅ์ด๊ณ , ๋„์‹œ์—์„œ ๋ฉด์ ‘์žฅ๊นŒ์ง€์˜ ๊ธธ์ด ๋ณด์žฅ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฆ‰ ๋ฉด์ ‘์žฅ์—์„œ ๋„์‹œ๊นŒ์ง€์˜ ๊ธธ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ €์žฅํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋Š” heapq๋ฅผ์“ด ๋‹ด๋ฐฑํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฌธ์ œ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

N, M, K = map(int, input().split())

import heapq
def dijkstra(spots, graph, N):
    INF = 10**18
    dist = [INF] * (N+1)
    heap = []

    for start in spots:
        dist[start] = 0
        heapq.heappush(heap, (0, start))
    
    while heap:
        d, cur = heapq.heappop(heap)
        if dist[cur] < d:
            continue
        # WTG == Where To Go
        for WTG, cost in graph[cur]:
            if dist[WTG] > d + cost:
                dist[WTG] = d + cost
                heapq.heappush(heap, (dist[WTG], WTG))
    
    return dist


graph = [[] for _ in range(N+1)]

for _ in range(M):
    u, v, c = map(int, input().split())
    graph[v].append((u, c))

spots = list(map(int, input().split()))

farest_dist = -1
city = 0
dist = dijkstra(spots, graph, N)

for i in range(1, N+1):
    if dist[i] > farest_dist:
        farest_dist = dist[i]
        city = i
    if dist[i] == farest_dist and i < city:
        city = i

print(city)
print(farest_dist)

์•„ ์ฐธ๊ณ ๋กœ ์ €๋Š”์ฃผ๋กœ INF์— 987654321์„ ์“ฐ๋Š”๋ฐ
์ด๋ฌธ์ œ์—์„  ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ 100000, ๊ฐ€์ค‘์น˜๋Š” 100000์ด๋ผ 10^10๊นŒ์ง€ ์ปค์งˆ ์ˆ˜ ์žˆ์–ด ํ•œ๋ฒˆ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค..
์•ž์œผ๋กœ๋Š” 10*18์„ ์จ์•ผ๊ฒ ๋‹ค๋Š” ๊ตํ›ˆ์„ ์–ป์–ด๊ฐ‘๋‹ˆ๋‹ค~

Copy link
Member

@9kyo-hwang 9kyo-hwang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ˆœ๊ฐ„ ๋ญ์— ํ™€๋ ธ์„๊นŒ์š”? ๋ฉด์ ‘์žฅ -> ๋„์‹œ ์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์ถ•ํ•ด์„œ ํ’€๋ฉด ๋˜์ง€ ํ•˜๊ณ  ์ƒ๊ฐ ๋ฐ”๋กœ ๋– ์˜ฌ๋ ธ๋Š”๋ฐ ์™œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์„๊นŒ์š”... ์ˆœ๊ฐ„ ๊ฐ ๋ฉด์ ‘์žฅ ๋…ธ๋“œ๋งˆ๋‹ค ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ๋‹ค ๋Œ๋ ค์•ผํ•œ๋‹ค๊ณ  ์ฐฉ๊ฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ํ—ˆํ—ˆ...

์ด๋ ‡๊ฒŒ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ฅผ ๋’ค์ง‘์–ด์„œ ์ €์žฅํ•œ ๋’ค, ๋ชจ๋“  ์ถœ๋ฐœ์ง€ -> ๋ชฉ์ ์ง€๊ฐ€ ์•„๋‹Œ ๋ชฉ์ ์ง€ -> ๋ชจ๋“  ์ถœ๋ฐœ์ง€๋กœ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ์–ป๋Š” ๊ฑด ๊ตญ๋ฐฅ๊ฐ™์€ ์œ ํ˜•์ด์ฃ . ์‹ค์ „์—์„œ๋„ ์ž˜ ๋– ์˜ฌ๋ฆฌ์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int N, M, K; cin >> N >> M >> K;
    
    vector<vector<pair<int, long long>>> graph(N + 1);
    while(M--) {
        int U, V, C; cin >> U >> V >> C;
        graph[V].emplace_back(U, C);    // reverse
    }
    
    using Node = pair<long long, int>;
    priority_queue<Node, vector<Node>, greater<>> pq;
    vector<long long> distances(N + 1, 1e10);
    unordered_set<int> cities; cities.reserve(K);
    
    while(K--) {
        int node; cin >> node;
        pq.emplace(0, node);
        distances[node] = 0;
        cities.emplace(node);
    }
    
    while(!pq.empty()) {
        const auto [du, u] = pq.top();
        pq.pop();
        
        if(distances[u] < du) {
            continue;
        }
        
        for(const auto& [v, dv] : graph[u]) {
            if(du + dv < distances[v]) {
                distances[v] = du + dv;
                pq.emplace(distances[v], v);
            }
        }
    }
    
    long long maxDistance = 0;
    long long minNode = 0;
    for(int node = 1; node <= N; ++node) {
        if(cities.count(node)) {
            continue;
        }
        
        if(distances[node] > maxDistance) {
            maxDistance = distances[node];
            minNode = node;
        }
    }
    
    cout << minNode << "\n" << maxDistance;

    return 0;
}

Copy link
Collaborator

@kangrae-jo kangrae-jo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์žฌ๋ฏธ์žˆ๋Š” ๋ฌธ์ œ๊ตฐ์š”.

๊ฒฝ๋กœ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋Œ๋ ค์„œ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฉด์ ‘์žฅ์„ source๋กœ ๋‘์–ด์„œ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•ด๋ƒˆ์–ด์š”.
๊ทผ๋ฐ ์™œ ๋ฌธ์ œ๊ฐ€ ์•ˆํ’€๋ฆฌ๋Š” ๊ฑฐ์ง€.... ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜๊ณ  gpt์— ๋„ฃ์–ด๋ดค์–ด์š”...
์›์ธ์„ ์•Œ๊ณ  ํ•œ์ˆจ๋งŒ ๋‚˜์˜ค๋”๋ผ๊ตฌ์š”.

์ œ๊ฐ€ ์ฒ˜์Œ์— ์ง  ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€๊ฐ™์•„์š”.

while (!pq.empty()) {
        auto [dist, cur] = pq.top(); 
        pq.pop();

        if (dist > distances[cur]) continue;

        for (auto [dist_, next] : graph[cur]) {
            long long newDist = dist + dist_;
            if (newDist < distances[next]) {
                distances[next] = newDist;
                pq.push({newDist, next});
            }
        }
    }

for๋ฌธ์—์„œ ๊บผ๋‚ผ๋•Œ ๋ฐ˜๋Œ€๋กœ ๊บผ๋‚ด๊ณ  ์žˆ์—ˆ๋”๋ผ๊ตฌ์š”...
ํ์—๋Š” c++์˜ pq๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ {๊ฑฐ๋ฆฌ, ๋…ธ๋“œ} ๋กœ ์ €์žฅํ•ด๋†จ๊ฑฐ๋“ ์š”. ๊ทธ๋ž˜์„œ ์ž์ฃผ ํ—ท๊ฐˆ๋ คํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ดํ›„์—๋„ ๋ช‡๋ฒˆ ํ‹€๋ ค์„œ ๋ฆฌ๋ฏธํŠธ๋ฅผ longlong์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๊ณ  ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž

์†”๋ฃจ์…˜ ์ž์ฒด๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ๊ฐํ•ด๋ƒˆ๋‹ค๋Š” ๊ฒƒ์— ํฐ ์˜๋ฏธ๋ฅผ ๋‘ก๋‹ˆ๋‹ค์š”.

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

const long long INF = 1e18;

int N, M, K;
vector<vector<pair<int, int>>> graph;
vector<long long> distances;

void solution(vector<int>& places) {
    priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<>> pq;
    distances.assign(N + 1, INF);

    for (int src : places) {
        pq.push({0, src});
        distances[src] = 0;
    }

    while (!pq.empty()) {
        auto [dist, cur] = pq.top(); 
        pq.pop();

        if (dist > distances[cur]) continue;

        for (auto [next, dist_] : graph[cur]) {
            long long newDist = dist + dist_;
            if (newDist < distances[next]) {
                distances[next] = newDist;
                pq.push({newDist, next});
            }
        }
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> N >> M >> K;

    graph = vector<vector<pair<int, int>>>(N + 1);
    for (int i = 0; i < M; i++) {
        int U, V, C;
        cin >> U >> V >> C;
        graph[V].push_back({U, C});
    }

    vector<int> places(K);
    for (int i = 0; i < K; i++) {
        cin >> places[i];
    }

    solution(places);

    int answer = 1;
    for (int i = 2; i <= N; i++) {
        if (distances[i] > distances[answer]) answer = i;
    }

    cout << answer << '\n' << distances[answer] << '\n';

    return 0;
}

Copy link
Collaborator

@g0rnn g0rnn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋‹น์—ฐํžˆ ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ํ†ตํ•ด ํ’€์–ด์•ผํ•œ๋‹ค๊ณค ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋‹ต์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ๋ฉด์ ‘์žฅ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” V(๋ชจ๋“  ๋„์‹œ์˜ ์ˆ˜)์ด๊ธฐ ๋•Œ๋ฌธ์— O(VElogV)๊ฐ€ ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ์˜ˆ์ƒํ–ˆ์—ˆ์ฃ .

20๋ถ„ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ •๋ง ๋‹ต์ด ์•ˆ๋ณด์—ฌ์„œ ์ด๋ฒˆ์—๋„ ๋‹ต์ง€๋ฅผ ๋ดค์Šต๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์ด ์ €๋ž‘ ๋น„์Šทํ–ˆ๋Š”๋ฐ ํ์— ๋ฏธ๋ฆฌ ๋ชจ๋“  ์ถœ๋ฐœ์ง€๋ฅผ ๋„ฃ๊ณ  distance๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•  ์ค„์„ ์ •๋ง ๋ชฐ๋ž๋„ค์š”.!

image

์–ด๋–ค ์ตœ์†Œ๊ฒฝ๋กœ ๋ฌธ์ œ๋„ ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ํ’€๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑธ ๋‹ค์‹œ๊ธˆ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค :)

๊ทผ๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ๋งŒ์ด๋ผ... ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ด์ง ์• ๋จน์€.. ๋ถ„๋ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๊ณ ์ƒํ•˜์…จ์–ด์š”~

package beakjoon;

import java.io.*;
import java.util.*;

public class Sol17835 {

    static int V, E, K;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        V = Integer.parseInt(st.nextToken());
        E = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());

        List<List<int[]>> graph = new ArrayList<>();
        List<Integer> spot = new ArrayList<>();
        for (int i = 0; i <= V; i++) {
            graph.add(new ArrayList<>());
        }

        for (int i = 0; i < E; i++) {
            st = new StringTokenizer(br.readLine());
            int u = Integer.parseInt(st.nextToken());
            int v = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());

            graph.get(v).add(new int[]{u, c});
        }
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < K; i++) {
            spot.add(Integer.parseInt(st.nextToken()));
        }
        br.close();

        long[] distance = dijkstra(graph, spot);
        long maxDist = -1;
        int maxCity = 0;
        for (int i = 1; i <= V; i++) {
            if (distance[i] > maxDist) {
                maxCity = i;
                maxDist = distance[i];
            }
        }
        System.out.println(maxCity);
        System.out.println(maxDist);
    }

    private static long[] dijkstra(List<List<int[]>> graph, List<Integer> spot) {
        PriorityQueue<Node> pq = new PriorityQueue<>((a, b) -> Long.compare(a.dist, b.dist));
        long[] distance = new long[V + 1];
        Arrays.fill(distance, Long.MAX_VALUE);

        for (Integer s : spot) {
            distance[s] = 0L;
            pq.offer(new Node(s, 0L));
        }
        while (!pq.isEmpty()) {
            int city = pq.peek().city;
            long dist = pq.poll().dist;

            if (dist > distance[city]) continue;

            for (int[] next : graph.get(city)) {
                long nextDist = next[1] + dist;
                if (nextDist < distance[next[0]]) {
                    pq.offer(new Node(next[0], nextDist));
                    distance[next[0]] = nextDist;
                }
            }
        }
        return distance;
    }

    static class Node {
        int city;
        long dist;
        public Node(int city, long dist) {
            this.city = city;
            this.dist = dist;
        }
    }
}

@g0rnn g0rnn merged commit 1ec1660 into main Aug 9, 2025
1 check passed
@g0rnn g0rnn deleted the 31-kokeunho branch August 9, 2025 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants