Cod sursa(job #2475540)

Utilizator greelioGreenio Greely greelio Data 17 octombrie 2019 08:37:32
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include<bits/stdc++.h>
#define pii pair<int,int>
#define x first
#define y second
#define N 50100
#define inf 1e9
using namespace std;

queue<pii> Q;
int n,m,d[N];
vector<pii>V[N];

int main() {
    ifstream cin("dijkstra.in");
    //ofstream cout("dijkstra.out");
    cin>>n>>m; cout<<n<<" "<<m<<'\n';

    for (int i=1; i<=m; i++) {
        int x,y,c; cin>>x>>y>>c;
        V[x].push_back({y,c});
    }
  for (int i=2; i<=n; i++) d[i]=inf;

    for (auto it: V[1]) {
        Q.push({it.y, it.x});
        d[it.x] = it.y;
    }

    while (Q.size()) {
        int x=Q.front().y;
        int c=Q.front().x;
        Q.pop();
        if (d[x]<c) continue;

        for (auto it: V[x]) {
            int y=it.x;
            int c2=it.y;

            if (d[y]>d[x]+c2) {
                d[y]=d[x]+c2;
                Q.push({d[y], y});
            }
        }
    }

    for (int i=2; i<=n; i++) {
        cout<<d[i]<<" ";
    }


    return 0;
}