Cod sursa(job #1757041)

Utilizator tqmiSzasz Tamas tqmi Data 14 septembrie 2016 11:25:34
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#define oo 1<<30
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,M,L[50005],V[50005];
vector <pair <int,int> > nod[50005];
void read()
{
    fin>>N>>M;
    for(int i=1;i<=M;i++)
    {
        int s,f,d;
        fin>>s>>f>>d;
        nod[s].push_back(make_pair(f,d));
    }
}
void Dijkstra()
{
    for(int i=2;i<=N;i++)
        L[i]=oo;
    for(int k=1;k<=N;k++)
    {
        int Min=oo;
        int Nod;
        for(int i=1;i<=N;i++)
            if(L[i]<Min && !V[i])
                {
                    Min=L[i];
                    Nod=i;
                }
        V[Nod]=1;
        for(int i=0;i<(int)nod[Nod].size();i++)
        {
            int v=nod[Nod][i].first,C=nod[Nod][i].second;
            L[v]=min(L[v],L[Nod]+C);
        }
    }
}
void print()
{
    for(int i=2;i<=N;i++)
    {
        if(L[i]==oo) L[i]=0;
        fout<<L[i]<<" ";
    }
}

int main()
{
    read();
    Dijkstra();
    print();
    return 0;
}