Cod sursa(job #2465938)

Utilizator Dragos1226Dragos Chileban Dragos1226 Data 1 octombrie 2019 08:34:25
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
#define NMAX 50000
vector <pair<int,int> > G[NMAX+5];
int N, M, Use[NMAX+5], D[NMAX+5];
int oo = 100000000;
void Read() {
    in >> N >> M;
    int x, y, c;
    for(int i = 0; i < M; i++) {
        in >> x >> y >> c;
        G[x].push_back(make_pair(y,c));
    }
}

void Dijkstra () {
    for (int i = 2; i <= N; i++)
        D[i] = oo;


    for (int i = 1; i <= N; i++) {
        int Min = oo, Nod;
        for (int i = 1; i <= N; i++)
            if(!Use[i] && D[i]<Min) {
                Min = D[i];
                Nod = i;
            }
    Use[Nod] = 1;

    for (int i = 0; i < G[Nod].size(); i++) {
        int Vecin = G[Nod][i].first, Cost = G[Nod][i].second;
        if(D[Vecin] > D[Nod]+Cost)
            D[Vecin] = D[Nod] + Cost;
    }
    }
}

void Print() {
    for (int i = 2; i <= N; i++) {
        if (D[i] == oo)
            D[i] = 0;
        out << D[i] << " ";
    }

    out << '\n';
}


int main () {
    Read();
    Dijkstra();
    Print();
}