Cod sursa(job #2578378)

Utilizator GarvanGrachiIvan Valentinov GarvanGrachi Data 10 martie 2020 22:45:05
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include<bits/stdc++.h>
#include<fstream>
using namespace std;

ifstream in("dijkstra.in");
ofstream out("dijkstra.out");

int n, m;
int dist[1048576];
vector<pair<int, int> > gr[1048576];
priority_queue<pair<int,int>, vector<pair<int, int> >, greater<pair<int, int> > > pq;


int main(){
    in>>n>>m;
    for(int i=0;i<m;++i){
        int f,t,d;
        in>>f>>t>>d;
        gr[t].push_back({f, d});
        gr[f].push_back({t, d});
    }

    fill(dist, dist+n, 1048576);
    dist[1]=0;
    pq.push({0, 1});
    while(!pq.empty()){
        auto a=pq.top();
        pq.pop();
        if(a.first>dist[a.second]) continue;
        for(int i: gr[a.second]){
            if(dist[i.first] > dist[a.second] + i.second){
                dist[i.first] > dist[a.second] + i.second;
                pq.push({dist[i.first], i.first});
            }
        }
    }
    for(int i=2;i<=n;++i){
        if(dist[i]==1048576) cout<<"0 ";
        else cout<<dist[i]<<' ';
    }

    return 0;
}