Cod sursa(job #593743)

Utilizator rootsroots1 roots Data 4 iunie 2011 13:23:27
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstring>
#include <fstream>

#define MAX 50001

using namespace std;

int D[MAX];
char ok[MAX];

int main()
{
    int M,N,S,T,x,y,c,end;

    ifstream in;
    ofstream out;

    in.open("distante.in");
    out.open("distante.out");

    in>>T;

    for(;T;--T)
    {
        in>>N>>M>>S;

        memset(D,0,sizeof(D));
        memset(ok,0,sizeof(ok));

        for(int i=1;i<=N;i++) in>>D[i];

        end=0;
        ok[S]=1;

        for(;M;--M)
        {
            in>>x>>y>>c;
            if(D[x]+c<D[y]) end=1;
            else
            if(D[x]+c==D[y]) ok[y]=1;
        }

        if(D[S]!=0) end=1;

        if(end) out<<"NU\n";
        else
        {
            for(int i=1;i<=N;i++)
                if(ok[i]!=1)
                {
                    end=1;
                    break;
                }
            if(end) out<<"NU\n";
            else out<<"DA\n";
        }
    }

    in.close();
    out.close();

    return 0;
}