Cod sursa(job #2923555)

Utilizator Mendea_IanisMendea Ianis Teodor Mendea_Ianis Data 15 septembrie 2022 19:13:07
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m,c,a,b;

long long dist[50005];

vector< pair<int,int> > V[50005];

priority_queue<pair<long long,int>,vector< pair<long long,int>>,greater<pair<long long,int>> > P;



int main()
{
    fin>>n>>m;
    for(int i = 1;i<=m;i++)
    {
        fin>>a>>b>>c;
        V[a].emplace_back(b,c);
    }
    dist[1] = 0;
    for(int i = 2;i<=n;i++)
        dist[i] = 1e18;
    for(int i = 1;i<=n;i++)
        P.push(make_pair(dist[i],i));
    while(!P.empty())
    {
        pair<long long, int> element;
        element = P.top();
        P.pop();

        if(dist[element.second]<element.first)
            continue;
        for(auto it:V[element.second])
        {
            if(dist[it.first]>dist[element.second] + it.second)
            {
                dist[it.first] = dist[element.second] + it.second;
                P.push(make_pair(dist[it.first],it.first));
            }
        }
    }
    for(int i = 2;i<=n;i++)
    {
        if(dist[i]!=1e18)
            fout<<dist[i]<<' ';
        else
            fout<<0<<' ';
    }

}