Cod sursa(job #3369930)

Utilizator contandrei3Andrei Mihai contandrei3 Data 22 octombrie 2026 16:44:52
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
#define PII pair<int, int>
#define inf 1e9
#define NMAX 50001
vector <PII> v[NMAX];
priority_queue <PII, vector <PII>, greater <PII>> q;
int d[NMAX], n, m, i, a, b, c;
void dijkstra (int ns)
{
        for (i=1;i<=n;i++) d[i]=inf;
        d[ns]=0;
        q.push({0,ns});
        while (!q.empty())
        {
                int nod=q.top().second;
                int cost=q.top().first;
                q.pop();
                        if (d[nod]!=cost) continue;
                for (i=0;i<v[nod].size();i++) { //luam fiecare vecin direct
                        int vnod=v[nod][i].second;
                        int vcost=v[nod][i].first;
                        if (vcost+cost < d[vnod]){
                                d[vnod]=vcost+cost;
                                q.push({d[vnod],vnod});
                        }
                }
        }
}
int main()
{
        fin >> n  >> m;
        for (i=1;i<=m;i++) {
                fin>>a>>b>>c;
                v[a].push_back({c,b});
        }
        dijkstra (1);
        for (i=2;i<=n;i++)
                if (d[i]!=inf) fout<<d[i]<<" ";
                else fout<<0<<" ";
        return 0;
}