Cod sursa(job #381172)

Utilizator xtremespeedzeal xtreme Data 9 ianuarie 2010 15:17:33
Problema Distante Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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];
          
          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(ok) {
                  if(b!=S && D[a]+c==D[b])     indicat[b]=1;
                  if(a!=S && D[b]+c==D[a])     indicat[a]=1;
                          }
                 }
          for(i=1;i<=N && ok;i++)
                  if(i!=S && !indicat[i])
                              ok=0;
                                 
          if(ok)   out<<"DA"<<"\n";
          else     out<<"NU"<<"\n";
         }
     in.close();out.close();
     return 0;
     }