Pagini recente » Cod sursa (job #1023031) | Cod sursa (job #2165020) | Cod sursa (job #616279) | Cod sursa (job #1863219) | Cod sursa (job #592882)
Cod sursa(job #592882)
#include <cstdio>
#include <string>
#define MAXN 50000
int main(){
freopen("distante.in", "r", stdin);
freopen("distante.out", "w", stdout);
int N, M, S, T, D[MAXN+10], C[MAXN+10], i, a, b, c, err;
scanf("%d", &T);
while(T--){
memset(C, 0, sizeof(C));
err=0;
scanf("%d%d%d", &N, &M, &S);
if(!M)
err=1;
for(i=1; i<=N; i++)
scanf("%d", D+i);
if(D[S]==0)
C[S]=1;
else
err=1;
//if(!err)
for(i=1; i<=M; i++){
scanf("%d%d%d", &a, &b, &c);
if(D[a]+c < D[b]){
err=1;
//break;
}
if(D[a]+c == D[b])
C[b]=1;
if(D[b]+c < D[a]){
err=1;
//break;
}
if(D[b]+c == D[a])
C[a]=1;
}
//if(!err)
for(i=1; i<=N; i++)
if(!C[i]){
err=1;
//break;
}
if(!err)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}