Cod sursa(job #1096860)

Utilizator gabrielvGabriel Vanca gabrielv Data 2 februarie 2014 17:52:16
Problema Distante Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 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-- && Valid)
        {
            scanf("%d%d%d",&node1,&node2,&cost);
            Valid = !(Dist[node1] > Dist[node2] + cost || Dist[node2] > Dist[node1] + cost);
        }

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

    }
    return 0;
}