Cod sursa(job #3164214)

Utilizator vozian.anghelinaAnghelina Vozian vozian.anghelina Data 2 noiembrie 2023 14:20:11
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> V[51000], C[52000];
ll N[51000], Z[51000];
ll l, n, gasite;
int main(){
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");
    cin >> n >> l;
    int d, p, c;
    while(l--){
        cin >> d >> p >> c;
        V[d].push_back(p);
        C[d].push_back(c);
    }
    for(int i=2; i<=n; i++){
        N[i] = 1e9;
        Z[i] = 0;
    }
    N[1] = 0;
    Z[1] = 0;
    d = 1;
    ll n1 = n;
    while(n1--){
        for(int i=0; i<V[d].size(); i++){
            if(N[d] + C[d][i] < N[V[d][i]]){
                N[V[d][i]] = N[d] + C[d][i];
            }
        }

        ll mn =1e9;
        for(int i=1; i<=n; i++){
            if(N[i] < mn && !Z[i]){
                mn = N[i];
                d = i;
            }
        }
        Z[d] = 1;
    }

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