Cod sursa(job #2704445)

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

using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");

const int NMAX=50003;
int n,m,dist[NMAX];

struct edge
{
    int node, dist;
    bool operator <(const edge &aux)const
    {
        return dist>aux.dist;
    }
};

vector<edge> g[NMAX];
priority_queue<edge>pq;

int main()
{

    in>>n>>m;
    for(int i=1, a, b, l; i<=n; i++)
    {
        in>>a>>b>>l;
        g[a].push_back({b,l});
        g[b].push_back({a,l});
    }
    memset( dist, -1, sizeof(dist));
    pq.push({1,0});
    while(!pq.empty())
    {
        int node=pq.top().node, l=pq.top().dist;
        pq.pop();
        if(dist[node] != -1)
        {
            continue;
        }
        dist[node]=l;
        for(auto y:g[node])
            if(dist[y.node] == -1)
               pq.push({y.node,l+y.dist});
    }
    for(int i=2;i<=n;i++)
        out<<dist[i]<<" ";
    return 0;
}