Cod sursa(job #2351356)

Utilizator depresiuneacolinaraatransilvanieiDomnul G depresiuneacolinaraatransilvaniei Data 22 februarie 2019 11:44:10
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
vector<pair <int, int> >v[100000];
priority_queue<pair <int, int> >q;
int dist[100000];
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
 void Dijkstra(int nr)
{
    dist[nr]=-1;
    q.push({-1,nr});
    while(!q.empty())
    {
        nr=q.top().y;
        dist[nr]=-dist[nr];
        for(auto it:v[nr])
            if(!dist[it.y]||dist[it.y]<-dist[nr]-it.x)
            {
                dist[it.y]=-dist[nr]-it.x;
                q.push({dist[it.y],it.y});
            }
        while(!q.empty()&&dist[q.top().y]>0)
            q.pop();
    }
}
    int main( )
{
    int n,m,i,s,nr1,nr2,nr;
    in>>n>>m;
    for(i=0;i<m;i++)
    {
        in>>nr1>>nr2>>nr;
        v[nr1].push_back({nr,nr2});
        v[nr2].push_back({nr,nr1});
    }
Dijkstra(1);
    for(i=2;i<=n;i++)
        out<<dist[i]-1<<" ";
    return 0;
}