Cod sursa(job #1661896)

Utilizator secretCCMniciun nume secretCCM Data 24 martie 2016 11:48:37
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

const int Nmax = 100005, oo = 10000000;
int n, Use[Nmax], D[Nmax];
vector < pair <int, int> > G[Nmax];
int Min, nod;

int main()
{
    f>>n;
    int x,y,c;
    while(f>>x>>y>>c)
    {
        G[x].push_back(make_pair(y,c));
    }
    for(int i = 1; i <= n; i++)
    {
        D[i] = oo;
        Use[i] = 0;
    }
    D[1] = 0;
    for(int i = 1; i <= n; i++)
    {
        Min = oo;
        for(int j = 1; j <= n; j++)
        {
            if(D[j] < Min && Use[j] == 0)
            {
                Min = D[j];
                nod = j;
            }
        }
        Use[nod] = 1;
        for(int j = 0; j <(int)G[nod].size(); j++)
        {
            int vecin = G[nod][j].first;
            int cost = G[nod][j].second;
            D[vecin] = min(D[vecin], D[nod] + cost);
        }
    }
    for(int i = 2; i <= n; i++)
    {
        if(D[i] == oo) g<<0<<' ';
        else g<<D[i]<<' ';
    }
    g<<'\n';
    return 0;
}