Cod sursa(job #483048)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 6 septembrie 2010 18:45:49
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#define nmax 50002

using namespace std;

ifstream in("distante.in");
ofstream out("distante.out");

bool corect,Drum[nmax] ;
int N,M,T,S,i,x,y,c;
int D[nmax];

inline void OK(int x,int y,int c)
{
    if(D[x]+c <D[y]) corect = 0;
    else
    if(D[x]+c==D[y]) Drum[y]=1;

}

int main()
{
    in>>T;
    while(T--)
    {
        corect = 1 ;
        in>>N>>M>>S;
        for(i=1;i<=N;i++)in>>D[i],Drum[i]=0;
        for(i=0;i<M;i++)
        {
            in>>x>>y>>c;
            OK(x,y,c);
            OK(y,x,c);
        }
        if(D[S])corect = 0;
        Drum[S]=1;
        for(i=1;i<=N;i++)if(!Drum[i])corect = 1;
        if(corect)out<<"DA\n";
        else      out<<"NU\n";
    }
    return 0;
}