Cod sursa(job #1452379)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 20 iunie 2015 17:14:20
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>

#define DIM 50100
using namespace std;

int N, M, T, Ver[DIM], Fin[DIM], X, Y, Z, K, S;

int main(){

    freopen("distante.in" ,"r", stdin );
    freopen("distante.out","w", stdout);

    scanf("%d", &T);

    for(T = T; T; T --){
        scanf("%d %d %d", &N, &M, &S);
        for(int i = 1; i <= N; i ++)
            scanf("%d", &Fin[i]);
        int ok = 1; Ver[S] = 1;
        for(int i = 1; i <= M; i ++){
            scanf("%d %d %d", &X, &Y, &Z);
            if(Fin[X] + Z < Fin[Y] || Fin[Y] + Z < Fin[X])
                ok = 0;
            if(Ver[X] == 0 && Fin[Y] + Z == Fin[X])
                Ver[X] = 1;
            if(Ver[Y] == 0 && Fin[X] + Z == Fin[Y])
                Ver[Y] = 1;
        }
        for(int i = 1; i <= N; i ++)
            if(Ver[i] == 0) ok = 0;
        if(Fin[S] != 0)
            ok = 0;
        switch(ok){
            case 1:{printf("DA\n");break;}
            case 0:{printf("NU\n");break;}
        }
    }

    return 0;
}