Cod sursa(job #2704448)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 10 februarie 2021 16:45:06
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.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;
}