Cod sursa(job #846725)

Utilizator ericptsStavarache Petru Eric ericpts Data 2 ianuarie 2013 18:12:56
Problema Distante Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <vector>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;


#define ushort int

const int maxn = 50005;

int found[maxn];

int main()
{
    freopen("distante.in","r",stdin);
    freopen("distante.out","w",stdout);
    int t,n,m,s,i;
    int k;
    int a,b,c;
    bool ok;
    scanf("%d\n",&t);
    for( k = 1; k <= t; ++ k)
    {
        scanf("%d %d %d\n",&n,&m,&s);
        memset(found,0,sizeof(found));
        for(i = 1 ; i <= n ; ++ i)
        {
            scanf("%d ",found+i);
        }
        ok = 1;
        if(found[s] != 0)
        {
            ok = 0;
            continue ;
        }
        for(i = 1 ; i <= m ; ++ i )
        {
            scanf("%d %d %d",&a,&b,&c);
            if(found[a] + c < found[b] || found[b] + c < found[a])
                ok = 0;
        }
        if(ok)
            printf("DA\n");
        else
            printf("NU\n");
    }
    return 0;
}