Cod sursa(job #2762466)

Utilizator marcumihaiMarcu Mihai marcumihai Data 7 iulie 2021 14:13:00
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");

int n,m;

int dist[250005];

struct el
{
    int node,cost;
    bool operator < (const el &A) const{
        return cost > A.cost;
    }
};

priority_queue < el > Q;
vector <el> L[250005];

void Dijkstra()
{
    Q.push({1,0});
    while(!Q.empty())
    {

        int val=Q.top().cost;
        int i=Q.top().node;
        for(int x=0; x<L[i].size() ; ++x)
        {
            el nc=L[i][x];
            if((dist[i]+nc.cost<dist[nc.node] ) || (dist[nc.node]==0))
            {
                dist[nc.node]=dist[i]+nc.cost;
                Q.push({nc.node ,dist[nc.node]});
            }
        }
        Q.pop();
    }




}
int main()
{
    f>>n>>m;

    for(int i=1;i<=m;++i)
    {
        int x,y,cost;
        f>>x>>y>>cost;
        L[x].push_back({y ,cost});

    }

    Dijkstra();
    for(int i=2;i<=n;++i)
        g<<dist[i]<<" ";
    return 0;
}