Cod sursa(job #381198)

Utilizator xtremespeedzeal xtreme Data 9 ianuarie 2010 16:43:15
Problema Distante Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream.h>
#include <fstream.h>
#define nmax 50100

int D[nmax],indicat[nmax];

int main()
    {ifstream in("distante.in");
     ofstream out("distante.out");
     int T,N,M,S,i,a,b,c,ok;
     
     for(in>>T;T;T--)
         {ok=1;
          in>>N>>M>>S;
          for(i=1;i<=N;i++)  {in>>D[i];indicat[i]=0;}
          
          if(D[S]!=0)  ok=0;
          
          for(i=1;i<=M && ok;i++)
                 {in>>a>>b>>c;
                  if(D[a]+c<D[b])              ok=0;
                  if(b!=S && D[a]+c==D[b])     indicat[b]=1;
                  if(a!=S && D[b]+c==D[a])     indicat[a]=1;
                 }
          if(ok)
            for(i=1;i<=N;i++)
                  if(i!=S && !indicat[i])
                              {ok=0;break;}
                                 
          if(ok)   out<<"DA"<<"\n";
          else     out<<"NU"<<"\n";
         }
     in.close();out.close();
     return 0;
     }