Cod sursa(job #2204364)

Utilizator Wh1plashOvidiu Taralesca Wh1plash Data 15 mai 2018 16:45:07
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <set>
#include <fstream>
#include <vector>
#include <list>
#define maxn 0x3f3f3f3f
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n, m, x, y, c, viz[50001];
vector< list< pair<int, int > > > E;
vector<int> d;
set<pair<int, int> > Q;
int main(){
    in >> n >> m;
    E.resize(n+1);
    d.resize(n+1, maxn);
    for(int i=1;i<=m;i++){
        in >> x >> y >> c;
        E[x].push_back({y,c});
    }
    Q.insert({0,1});
    d[1] = 0;
    while(!Q.empty()){
        int K = Q.begin()->second;
        Q.erase(Q.begin());
        viz[K] = 1;
        for(auto &p : E[K]){
           // cout << p.first << ' ';
            if(d[p.first] > d[K] + p.second){
                d[p.first] = d[K] + p.second;
                Q.insert({d[p.first],p.first});
            }
        }
    }
    for(int i=2;i<=n;i++)
        out << d[i] << ' ';
    return 0;
}