Cod sursa(job #2325130)

Utilizator MihneaGhiraMihnea MihneaGhira Data 21 ianuarie 2019 23:06:25
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,minim,x,y,c,nod;
int d[50100],v[50100];
vector< pair<int,int> >a[50100];
int main(){
    fin>>n>>m;
    for(int i=1;i<=m;i++){
        fin>>x>>y>>c;
        a[x].push_back(make_pair(y,c));
    }
    for(int i=2;i<=n;i++){
        d[i]=2000000000;
    }
    while(1==1){
        minim=2000000000;
        for(int i=1;i<=n;i++){
            if(minim>d[i]&&v[i]==0){
                minim=d[i];
                nod=i;
            }
        }
        if(minim==2000000000){
            break;
        }
        v[nod]=1;
        for(int i=0;i<a[nod].size();i++){
            int nod2=a[nod][i].first;
            int cost=a[nod][i].second;
            if(d[nod]+cost<d[nod2]){
                d[nod2]=d[nod]+cost;
            }
        }
    }
    for(int i=2;i<=n;i++){
        if(d[i]!=2000000000){
            fout<<d[i]<<" ";
        }else{
            fout<<0<<" ";
        }
    }
    return 0;
}