Cod sursa(job #3361248)

Utilizator Zeno1789Zeno Ciuca Zeno1789 Data 22 iulie 2026 11:08:11
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <vector>
#include <queue>
#define int long long
using namespace std;

ifstream cin ("dijkstra.in");
ofstream cout ("dijkstra.out");

const int INF=1e18;

struct Edge {
    int to;
    int w;
};

int n,m;
vector<Edge> adj[50005];
int dist[50005];

signed main() {
    cin>>n>>m;
    for (int i=1; i<=m; ++i) {
        int u, v, w;
        cin>>u>>v>>w;
        adj[u].push_back({v, w});
    }
    for (int i=1; i<=n; ++i) {
        dist[i]=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 &edge:adj[u]) {
            int v=edge.to;
            int w=edge.w;
            if (dist[v]>dist[u]+w) {
                dist[v]=dist[u]+w;
                pq.push({dist[v], v});
            }
        }
    }
    for (int i=2; i<=n; ++i) {
        if (dist[i]==INF) {
            dist[i]=0;
        }
        cout<<dist[i]<<(i==n ? "" : " ");
    }
}