Cod sursa(job #1436650)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 16 mai 2015 12:10:26
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <cstring>
#include <vector>
#define DIM 50002

using namespace std;

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int N,D[DIM],M;
vector <pair <int,int> > v[DIM];
int viz[DIM];
//int T[DIM];
int main(){
    fin>>N>>M;
    while(M--){
        int x,y,cost;
        fin>>x>>y>>cost;
        v[x].push_back(make_pair(y,cost));
    }
    memset(D,0x3f3f3f3f,sizeof(D));
    D[1]=0;
    for(int pos=1;pos<=N;pos++){
        int minim=0x3f3f3f3f;
        int k;

        for(int i=1;i<=N;i++)
            if(D[i]<minim && viz[i]==0){
                minim=D[i];
                k=i;
            }

        if(minim==0x3f3f3f3f)
            break;
        viz[k]=1;
        for(std::vector <pair <int,int > >::iterator it=v[k].begin();it!=v[k].end();it++){
            if(D[it->first]>D[k]+it->second){
                D[it->first]=D[k]+it->second;
                //T[it->first]=k;
            }
        }
    }
    for(int i=2;i<=N;i++)
        if(D[i]!=0x3f3f3f3f)
            fout<<D[i]<<" ";
        else
            fout<<0<<" ";
}