Cod sursa(job #3229809)

Utilizator ALEXbrPopa Ioan Alexandru ALEXbr Data 17 mai 2024 16:45:20
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(false);

    ifstream fin("dijkstra.in");
    ofstream fout("dijkstra.out");

    int n, m;
    fin >> n >> m;

    vector<vector<pair<int, int>>> destinations(n, vector<pair<int, int>>());

    for (int i = 0; i < n; i++) {
        int src, dst, cost;
        fin >> src >> dst >> cost;

        src--; dst--;

        destinations[src].push_back({dst, cost});
    }

    vector<int> dist(n, INT_MAX);
    dist[0] = 0;

    priority_queue<pair<int, int>> q;
    q.push({0, 0});

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

        for (const auto &[dst, cost] : destinations[node]) {
            if (dist[dst] > dist[node] + cost) {
                q.push({-cost, dst});

                dist[dst] = dist[node] + cost;
            }
        }
    }

    for (int i = 1; i < n; i++) {
        if (i != 1) {
            fout << ' ';
        }
        fout << (dist[i] == INT_MAX ? 0 : dist[i]);
    }
    fout << '\n';

    return 0;
}