Pagini recente » Cod sursa (job #829896) | Cod sursa (job #1587908) | Cod sursa (job #1570190) | Cod sursa (job #2062115) | Cod sursa (job #65415)
Cod sursa(job #65415)
#include <stdio.h>
#define nmax 100005
int T,n,m,s,d[nmax],v[nmax],n1,n2,cst;
int solve() {
scanf("%d%d%d",&n,&m,&s);
for(int i = 1; i <= n; i++) scanf("%d",&d[i]);
for(int i = 1; i <= n; i++) v[i] = 0;
if(d[s] != 0) return 0;
v[s] = 1;
for(int i = 1; i <= m; i++) {
scanf("%d%d%d",&n1,&n2,&cst);
if(d[n1] + cst < d[n2]) return 0;
if(d[n2] + cst < d[n1]) return 0;
if(d[n1] + cst == d[n2]) v[n2] = 1;
if(d[n2] + cst == d[n1]) v[n1] = 1;
}
for(int i = 1; i <= n; i++)
if(!v[i]) return 0;
return 1;
}
int main() {
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d",&T);
for(int t = 1; t <= T; t++) {
if(solve()) printf("DA\n");
else printf("NU\n");
}
return 0;
}