Cod sursa(job #3329743)

Utilizator coco11coraline kalbfleisch coco11 Data 15 decembrie 2025 14:18:59
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int INF = 1e15;

struct Edge {
    int to, cost;
};

signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);

    int N,M; cin>>N>>M;
    vector<vector<Edge>> g(N+1);
    for(int i=0;i<M;i++){
        int A,B,C; cin>>A>>B>>C;
        g[A].push_back({B,C});
    }

    vector<int> dist(N+1,INF);
    dist[1]=0;
    priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
    pq.push({0,1});

    while(!pq.empty()){
        auto [d,u]=pq.top(); pq.pop();
        if(d!=dist[u]) continue;
        for(auto e:g[u]){
            if(dist[e.to]>dist[u]+e.cost){
                dist[e.to]=dist[u]+e.cost;
                pq.push({dist[e.to],e.to});
            }
        }
    }

    for(int i=2;i<=N;i++){
        if(dist[i]==INF) cout<<0<<" ";
        else cout<<dist[i]<<" ";
    }
    cout<<"\n";
    return 0;
}