목차16
Notes
16

Dijkstra

인접 그래프 위에서 Dijkstra

constexpr int inf = 1LL << 60;
vector<int> dijkstra(vector<vector<pair<int, int>>>& g, int st){
    vector<int> dist(n + 1, inf);
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
    pq.push({dist[st] = 0, st});
    while(pq.size()){
        auto [cdist, cur] = pq.top(); pq.pop();
        if(dist[cur] < cdist) continue;
        for(const auto& [cost, nxt] : g[cur]){
            if(dist[nxt] > cdist + cost) pq.push({dist[nxt] = cdist + cost, nxt});
        }
    }
    return dist;
}