Cod sursa(job #3336159)

Utilizator anon123andrei popescu anon123 Data 24 ianuarie 2026 12:49:06
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
#include <tuple>

using namespace std;

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
constexpr int inf = 2000000000;
vector<vector<pair<int,int>>> lista;
vector<int> rez;
int main(){
    int n,m;
    fin >> n >> m;
    lista.resize(n+1);
    rez.resize(n+1, inf);

    for (int i = 1; i<=m; i++) {
        int u,v,c;
        fin>>u>>v>>c;
        lista[u].emplace_back(v,c);
    }
    priority_queue<tuple<int,int>, vector<tuple<int,int>>, greater<>> pq;
    pq.emplace(0,1);
    rez[1] = 0;
    while (!pq.empty()) {
        auto [cost,u] = pq.top();
        pq.pop();

        if (cost > rez[u]) continue;

        for (auto [v,c] : lista[u]) {
                if (rez[v] > rez[u] + c) {
                    rez[v] = rez[u] + c;
                    pq.emplace(rez[v],v);
                }

        }
    }

    for (int i = 2; i<=n; i++) {
        if (rez[i] == inf) {
            fout<<0<<" ";
        }
        else{
            fout<<rez[i]<<" ";
        }
    }
    return 0;
}