Cod sursa(job #2569817)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 4 martie 2020 13:47:14
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("recap.in");
ofstream out("recap.out");
const int NMAX=50005;
int n,m,dist[NMAX];
bool seen[NMAX];
struct edge{
    int node,cost;
    bool operator<(const edge&aux)const{
        return aux.cost<cost;
    }
};
vector<edge>g[NMAX];
priority_queue<edge>pq;
int main()
{
    in>>n>>m;
    for(int i=1,a,b,cost;i<=m;i++){
        in>>a>>b>>cost;
        g[a].push_back({b,cost});
    }
    pq.push({1,0});
    while(!pq.empty()){
        if(seen[pq.top().node]){
           pq.pop();
          continue;
        }
        int node=pq.top().node,cost=pq.top().cost;
        seen[node]=1;
        dist[node]=cost;
        pq.pop();
        for(auto y:g[node]){
            if(!seen[y.node])
                pq.push({y.node,cost+y.cost});
        }
    }
    for(int i=2;i<=n;i++)
        out<<dist[i]<<" ";
    return 0;
}