Cod sursa(job #70770)

Utilizator DastasIonescu Vlad Dastas Data 7 iulie 2007 11:32:26
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>

#define maxn 50000
#define maxm 100000

FILE *in = fopen("distante.in","r"), *out = fopen("distante.out","w");

struct muchie
{
    int x, y, c;
};

int t, n, m, s;
int d[maxn];
muchie a[maxm];

void go()
{
    if ( d[s-1] != 0 )
    {
        fprintf(out, "NU\n");
        return;
    }

    for ( int i = 0; i < m; ++i )
        if ( d[a[i].x - 1] + a[i].c < d[a[i].y - 1] )
        {
            fprintf(out, "NU\n");
            return;
        }
    fprintf(out, "DA\n");

    return;
}

int main()
{
    fscanf(in, "%d", &t);

    while ( t-- )
    {
        fscanf(in, "%d %d %d", &n, &m, &s);
        for ( int i = 0; i < n; ++i )
            fscanf(in, "%d", &d[i]);

        for ( int i = 0; i < m; ++i )
            fscanf(in, "%d %d %d", &a[i].x, &a[i].y, &a[i].c);

        go();
    }

	return 0;
}