Cod sursa(job #1803874)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 11 noiembrie 2016 23:07:11
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <vector>
#include <cctype>
#define MAXN 50000
#define MAXBUF 1<<17
FILE*fi,*fout;
char buf[MAXBUF];
int pos=MAXBUF;
inline char nextch(){
    if(pos==MAXBUF){
        fread(buf,1,MAXBUF,fi);
        pos=0;
    }
    return buf[pos++];
}
inline int getnr(){
   char a=nextch();
   while(isdigit(a)==0)
      a=nextch();
   int nr=0;
   while(isdigit(a)==1){
      nr=nr*10+a-'0';
      a=nextch();
   }
   return nr;
}
int d[MAXN+1];
int main(){
   int n,m,nod,t,i,a,b,c,flag;
   fi=fopen("distante.in" ,"r");
   fout=fopen("distante.out" ,"w");
   t=getnr();
   while(t>0){
      t--;
      n=getnr();
      m=getnr();
      nod=getnr();
      for(i=1;i<=n;i++)
        d[i]=getnr();
      flag=1;
      for(i=1;i<=m;i++){
         a=getnr();
         b=getnr();
         c=getnr();
         if(d[a]+c<d[b]||d[b]+c<d[a])
           flag=0;
      }
      if(d[nod]!=0)
        flag=0;
      if(flag==1)
        fprintf(fout,"DA\n");
      else
        fprintf(fout,"NU\n");
   }
   fclose(fi);
   fclose(fout);
   return 0;
}