Cod sursa(job #2325041)

Utilizator Bogdan_BuzatuBuzatu Bogdan Mihai Bogdan_Buzatu Data 21 ianuarie 2019 21:31:23
Problema Oras Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <vector>
#define INFINIT 250000*20000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,m,y,x,c,d[50010],p,minim,nr,vecin,distanta,v[50010];
vector< pair<int,int> >L[250010];

int main(){
    fin>>n>>m;
    for(int i=1;i<=m;i++){
        fin>>x>>y>>c;
        L[x].push_back(make_pair(y, c));
    }
    d[1]=0;
    for(int i=2;i<=n;i++){
        d[i]=INFINIT;
    }
    for(;;){
        minim=INFINIT;
        for(int i=1;i<=n;i++){
            if(v[i]==0 && d[i]<minim){
                minim=d[i];
                p=i;

            }
        }
        if(minim==INFINIT){
            break;
        }

        v[p] = 1;

        for(int i=0;i<L[p].size();i++){
            vecin=L[p][i].first;
            distanta = L[p][i].second;
            if(v[vecin] == 0 && d[vecin] > d[p] + distanta){
                d[vecin] = d[p] + distanta;
            }
        }
   }

    for(int i=2;i<=n;i++){
        if(d[i] != INFINIT){
            fout<<d[i]<<" ";
        }
        else{
            fout<<"0 ";
        }
    }

}