Pagini recente » Cod sursa (job #2276049) | Cod sursa (job #2821118) | Cod sursa (job #2330353) | Cod sursa (job #2618964) | Cod sursa (job #592887)
Cod sursa(job #592887)
#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);
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] || D[b]+c < D[a]){
err=1;
break;
}
if(D[a]+c == D[b])
C[b]=1;
if(D[b]+c == D[a])
C[a]=1;
}
//else
//for(i=1; i<=M; i++)
// scanf("%d%d%d");
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;
}