Cod sursa(job #2791846)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 31 octombrie 2021 11:23:18
Problema Distante Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

const int NMAX = 50001;

int supposedDistance[NMAX];

void solve(fstream& f, fstream& g) {
    int n, m, source;
    f >> n >> m >> source;

    for(int i = 1; i <= n; ++i) {
        int d;
        f >> d;
        supposedDistance[i] = d;
    }
    if(supposedDistance[source] != 0) {
        g << "NU\n";
        return;
    }
    for(int i = 0; i < m; ++i) {
        int a, b, c;
        f >> a >> b >> c;
        if(supposedDistance[a] + c < supposedDistance[b] || supposedDistance[b] + c < supposedDistance[a]) {
            g << "NU\n";
            return;
        }
    }

    g << "DA\n";
}

int main()
{
    fstream f("distante.in", ios::in);
    fstream g("distante.out", ios::out);
    int t;
    f >> t;
    for(int i = 0; i < t; ++i)
    {
        solve(f, g);
    }

    return 0;
}