Cod sursa(job #2751200)

Utilizator Andrei012Trache Andrei Andrei012 Data 14 mai 2021 15:58:14
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
#define inf 1e9+2
vector<pair<int,int> > v[50001];
set <pair<int,int> > q;
int parc[50001],dp[50001];
int main()
{
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");

    int n,m,i,x,y,cost,nod1,nod;
    cin>>n>>m;
    for(i=1;i<=m;++i){
        cin>>x>>y>>cost;
        v[x].push_back(make_pair(y,cost));
    }
    for(i=1;i<=n;++i)
        dp[i]=inf;
    dp[1]=0;
    q.insert(make_pair(0,1));
    while(q.size()>0){
        nod=q.begin()->second;
        q.erase(q.begin());
        if(parc[nod]==0){
            parc[nod]=1;
            for(i=0;i<v[nod].size();++i){
                nod1=v[nod][i].first;
                cost=v[nod][i].second;
                if(dp[nod1]>dp[nod]+cost){
                    dp[nod1]=dp[nod]+cost;
                    q.insert(make_pair(dp[nod1],nod1));
                }
            }
        }
    }
    for(i=2;i<=n;++i)
        if(dp[i]==inf)
            cout<<0<<" ";
        else
            cout<<dp[i]<<" ";
    return 0;
}