Cod sursa(job #1096863)

Utilizator gabrielvGabriel Vanca gabrielv Data 2 februarie 2014 17:54:17
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>

using namespace std;

#define NMAX 50005

int Dist[NMAX];

int N,M,S,T;

int main()
{
    freopen("distante.in","r",stdin);
    freopen("distante.out","w",stdout);
    scanf("%d",&T);

    while(T--)
    {
        bool Valid = true;
        scanf("%d%d%d",&N,&M,&S);

        for(int i=1;i<=N;i++)
            scanf("%d",&Dist[i]);
        if(Dist[S])
            Valid = false;

        int node1,node2,cost;
        while(M--)
        {
            scanf("%d%d%d",&node1,&node2,&cost);
            if(Dist[node1] > Dist[node2] + cost || Dist[node2] > Dist[node1] + cost)
                Valid = false;
        }

        if(Valid)
            printf("DA\n");
        else
            printf("NU\n");

    }
    return 0;
}