Cod sursa(job #1559004)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 29 decembrie 2015 21:34:43
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("distante.in");
ofstream out("distante.out");

const int dmax = 50000;

int d[dmax + 1];

int N, M, S, T;

void verifica()
{
    int i, x, y, cost;
    bool answer = true;
    bool GASIT  = false;

    in >> N >> M >> S;

    for(i = 1; i <= N; i++) in >> d[i];

    if(d[S] != 0) answer = false;

    for(i = 1; i <= M; i++)
    {
        in >> x >> y >> cost;

        if(d[x] + cost < d[y]) answer = false;

        if(d[x] + cost == d[y]) GASIT = true;
    }

    if(GASIT == false) answer = false;

    if(answer == true) out << "DA" << '\n';
    else
        out << "NU" << '\n';
}

int main()
{
    in >> T;

    for(int i = 1; i <= T; i++) verifica();

    return 0;
}