Pagini recente » Cod sursa (job #406183) | Cod sursa (job #1100147) | Cod sursa (job #889727) | Cod sursa (job #1630525) | Cod sursa (job #95352)
Cod sursa(job #95352)
#include<stdio.h>
#include<string.h>
long w[50005],d[50005],n,m,t,s,a,c,b;
void citire()
{
int l=0;
scanf("%ld%ld%ld", &n, &m, &s);
for (int i=1; i<=n; i++)
scanf("%ld", &d[i]);
if (d[s]!=0)
{
printf("NU\n");
l=1;
}
w[s]=1;
for (long i=1; i<=m; i++)
{
scanf("%ld%ld%ld", &a, &b, &c);
if ((d[a]+c<d[b] || d[b]+c<d[a]) && l==0)
{
printf("NU\n");
l=1;
}
if (d[a]+c==d[b])
w[b]=1;
if (d[b]+c==d[a])
w[a]=1;
}
for (long i=1; i<=n; i++)
if (w[i]==0 && l==0)
{
printf("NU\n");
l=1;
}
if (l==0)
printf("DA\n");
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%ld\n", &t);
for (int i=1; i<=t; i++)
{
memset(w,0,sizeof(w));
memset(d,0,sizeof(d));
citire();
}
fclose(stdin);
fclose(stdout);
return 0;
}