Cod sursa(job #3291268)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 3 aprilie 2025 21:25:33
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF = 1e9 + 7;
struct Muchie {
    int vec, cost;
};
int n, m, i, j, cost[50002], fr[50002];
vector<Muchie> gr[50002];

static inline void Dijkastra(int start = 1) {
    for(i = 1; i <= n; i++) cost[i] = INF;

    using DateNod = pair<int, int>;
    priority_queue<DateNod, vector<DateNod>, greater<DateNod>> q;

    q.push({0, start});
    cost[start] = 0;

    while(!q.empty()) {
        int nod = q.top().second;
        q.pop();

        for(Muchie urm : gr[nod]) {
            if(cost[urm.vec] > cost[nod] + urm.cost) {
                cost[urm.vec] = cost[nod] + urm.cost;
                q.push({cost[urm.vec], urm.vec});
            }
        }
    }
}

int main() {
    fin >> n >> m;
    for(i = 1; i <= m; i++) {
        int x, y, z;
        fin >> x >> y >> z;
        gr[x].push_back({y, z});
        //gr[y].push_back({x, z});
    }

    Dijkastra();
    for(i = 2; i <= n; i++) fout << cost[i] << " ";

    return 0;
}