Cod sursa(job #3353081)

Utilizator Teodor-CiprianNica Teodor-Ciprian Teodor-Ciprian Data 4 mai 2026 15:54:00
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

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

vector<pair<int, int>> adj[50001];
int d[50001], n, m, u, v, w;

struct cmp {
    bool operator()(pair<int, int> const& a, pair<int, int> const& b)
    {
        return a.first>b.first;
    }
};

int main() {
    fin>>n>>m;
    while(m)
    {
        m--;
        fin>>u>>v>>w;
        adj[u].push_back({v,w});
    }

    for (int i=1;i<=n;i++)
        d[i]=2147483647;

    priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> q;
    q.push({d[1]=0,1});

    while (q.size()!=0)
    {
        int u=q.top().second, dist=q.top().first;
        q.pop();

        if(dist>d[u])
            continue;

        for (pair<int, int> &e:adj[u])
            if (d[e.first]>d[u]+e.second)
                q.push({d[e.first]=d[u]+e.second,e.first});
    }

    for (int i=2;i<=n;i++)
        if(d[i]==2147483647)
            fout<<0<<" ";
        else
            fout<<d[i]<<" ";

    return 0;
}