Cod sursa(job #1628583)

Utilizator alexander34roArdelean Alexandru Andrei alexander34ro Data 4 martie 2016 09:17:06
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#define oo 10001
using namespace std;

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

typedef struct nod{
    int x = 0, y = 0, d = oo;
};

nod G[50000];
long D[50000];
int N, M;

void citeste_fa()
{
    f >> N >> M;

    for(int i = 1; i <= M; i++) f >> G[i].x >> G[i].y >> G[i].d;
}

void dijkstra()
{
    for(int i = 1; i <= N; i++) D[i] = oo;
    D[1] = 0;

    int ok = 0;
    while(!ok){

        ok = 1;
        for(int i = 1; i <= M; i++)
            if(D[G[i].y] > D[G[i].x] + G[i].d)
                D[G[i].y] = D[G[i].x] + G[i].d, ok = 0;
    }
}

int main()
{
    citeste_fa();

    dijkstra();

    for(int i = 2; i <= N; i++)
        if(D[i] != oo) g << D[i] << ' ';

    return 0;
}