Cod sursa(job #3338749)

Utilizator ccris.29Chirila Cristian ccris.29 Data 4 februarie 2026 19:54:36
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;

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

int n, m, s, a, b, c, vis[50001], inf = 999999;
long long C[50001];
vector<pair<long long, int>> AD[50001];
priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> Q;

void Dijkstra(int nod)
{
    Q.push({0, nod});

    while (Q.size() != 0)
    {
        long long c = Q.top().first;
        nod = Q.top().second;
        Q.pop();

        // cout << c << " " << nod << "\n";

        if (vis[nod] == 0)
            vis[nod] = 1;
        else
            continue;

        for (int i = 0; i < AD[nod].size(); i++)
        {

            long long cw = AD[nod][i].first;
            int w = AD[nod][i].second;

            // cout << w << " " << cw << "\n";
            if (C[w] > c + cw && vis[w] == 0)
            {
                C[w] = c + cw;
                Q.push({cw + c, w});
            }
        }
    }
}
int main()
{
    fin >> n >> m;

    for (int i = 1; i <= m; i++)
    {
        fin >> a >> b >> c;
        AD[a].push_back({c, b});
    }

    for (int i = 1; i <= n; i++)
        C[i] = inf;

    C[1] = 0;

    Dijkstra(1);

    for (int i = 2; i <= n; i++)
        if (C[i] != inf)
            fout << C[i] << " ";
        else
            fout << 0 << " ";

    return 0;
}