Cod sursa(job #1758928)

Utilizator tudorgalatanRoman Tudor tudorgalatan Data 18 septembrie 2016 08:01:01
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <climits>

using namespace std;

unsigned short int N, M;
unsigned short int K;
unsigned short int C[16];
unsigned short int x[10001], y[10001], z[10001];

bool okay;
unsigned short int i;

unsigned short int sol[2001];

int main ()
{
    ifstream fin ("ubuntzei.in");
    fin >> N >> M;
    fin >> K;
    for (i=1; i<=K; i++)
        fin >> C[i];
    for (i=1; i<=M; i++)
        fin >> x[i] >> y[i] >> z[i];
    fin.close();
    for (i=1; i<=M; i++)
        if (x[i] == 1)
            sol[y[i]] = z[i];
    for (i=2; i<=N; i++)
        if (sol[i] == 0)
            sol[i] = USHRT_MAX;
    while (okay == 0)
    {
        okay = 1;
        for (i=1; i<=M; i++)
            if (sol[y[i]] > sol[x[i]] + z[i])
            {
                sol[y[i]] = sol[x[i]] + z[i];
                okay = 0;
            }
    }
    for (i=2; i<=N; i++)
        if (sol[i] == USHRT_MAX)
            sol[i] = 0;
    ofstream fout ("ubuntzei.out");
    fout << sol[N];
    fout.close();
    return 0;
}