Cod sursa(job #177599)

Utilizator nimeniaPaul Grigoras nimenia Data 13 aprilie 2008 12:50:25
Problema Distante Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>

const long NMAX=50001;

struct muchie {
       int n1,n2,c;
       }M[NMAX*2];

int D[NMAX],i,j,sursa,nteste,n,m,nm,contor,ok,ok2;

int main(){
    freopen("distante.in","r",stdin);
    freopen("distante.out","w",stdout);
    
    scanf("%d",&nteste);
    
    for (contor=1;contor<=nteste;contor++){
        scanf("%d%d%d",&n,&m,&sursa);
        for(i=1;i<=n;i++) scanf("%d",&D[i]);
        for(i=1;i<=m;i++) scanf("%d%d%d",&M[nm].n1,&M[nm].n2,&M[nm].c),nm++;
        ok=1;
        if (D[sursa]!=0) ok=0;
        else{ for (i=1;i<=m && ok;i++)
                  if (D[M[i].n2]>D[M[i].n1]+M[i].c) ok=0;
              ok2=0;    
              for (i=1;i<=m && !ok2 && ok;i++)                 
                  if (D[M[i].n1]+M[i].c==D[M[i].n2]) ok2=1;
             } 
        if (ok && ok2) printf("DA\n");
        else printf("NU\n");
        nm=0;                  
    }
    
    
    
    return 0;
}