Cod sursa(job #1765788)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 26 septembrie 2016 23:26:37
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
using namespace std;

const int MAXN = 50005;

int d[MAXN + 1];

int main()
{
    FILE *fin, *fout;

    fin = fopen("distante.in", "r");
    fout = fopen("distante.out", "w");

    int t;
    fscanf(fin, "%d", &t);

    for(int k = 1; k <= t; k++)
    {
        int n, m, s;
        bool ok = 1;

        fscanf(fin, "%d%d%d", &n, &m, &s);

        for(int i = 1; i <= n; i++)
        {
            fscanf(fin, "%d", &d[i]);
        }
        for(int i = 1; i <= m; i++)
        {
            int a, b, c;
            fscanf(fin, "%d%d%d", &a, &b, &c);
            if(d[a] + c < d[b] || d[b] + c < d[a])
                ok = 0;
        }

        if(d[s] == 0 && ok == 1)
            fprintf(fout, "DA\n");
        else
            fprintf(fout, "NU\n");

    }

    return 0;
}