Cod sursa(job #2682942)

Utilizator Andrei012Trache Andrei Andrei012 Data 9 decembrie 2020 23:23:32
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
vector<pair<int,int> > v[50001];
priority_queue <pair<int,int> > q;
int parc[50001],dist[50001];
int main()
{
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");

    int n,m,i,x,y,cost,nod,nod1;
    cin>>n>>m;
    for(i=1;i<=m;++i){
        cin>>x>>y>>cost;
        v[x].push_back({y,cost});
    }
    for(i=1;i<=n;++i)
        dist[i]=1e9+2;
    dist[1]=0;
    q.push({0,1});
    while(q.size()>0){
        nod=q.top().second;
        q.pop();
        if(parc[nod]!=1){
            parc[nod]=1;
            for(i=0;i<v[nod].size();++i){
                nod1=v[nod][i].first;
                cost=v[nod][i].second;
                if(dist[nod1]>dist[nod]+cost){
                    dist[nod1]=dist[nod]+cost;
                    q.push({-dist[nod1],nod1});
                }
            }
        }
    }
    for(i=2;i<=n;++i)
        if(dist[i]==1e9+2)
            cout<<0<<" ";
        else
            cout<<dist[i]<<" ";
    return 0;
}