Cod sursa(job #2395276)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 2 aprilie 2019 13:05:43
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
#include<queue>
#include<vector>
#define pii pair<int,int>
#define mp make_pair
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");

int comp(const pii& i,const pii& j){

    return i.second>j.second;

}

int main(){

    int n,m;

    cin>>n>>m;

    vector<pii> G[50005];

    for(int i=1;i<=m;i++){

        int x,y,c;

        cin>>x>>y>>c;

        G[x].push_back(mp(y,c));

    }

    int d[50005];

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

    priority_queue<pii,vector<pii>,greater<pii> > Q;

    Q.push(mp(0,1));

    while(!Q.empty()){

        int x=Q.top().first;
        int y=Q.top().second;

        Q.pop();

        if(x>=d[y]) continue;

        d[y]=x;

        for(int i=0;i<G[y].size();i++){

            int vec=G[y][i].first;
            int cost=G[y][i].second;

            if(d[y]+cost<d[vec])

                Q.push(mp(d[y]+cost,vec));

        }

    }

    for(int i=2;i<=n;i++)
        if(d[i]==2e9) cout<<"0 ";
          else  cout<<d[i]<<' ';

}