Pagini recente » Cod sursa (job #2011280) | Istoria paginii runda/test3101/clasament | Cod sursa (job #1269078) | Cod sursa (job #1346076) | Cod sursa (job #821844)
Cod sursa(job #821844)
#include<stdio.h>
#define nmax 50005
long n, m, s, t, ii, d[nmax], a, b, c, i;
bool ok, g[nmax];
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%ld",&t);
for (ii=1;ii<=t;ii++)
{
scanf("%ld %ld %ld",&n,&m,&s);
for (i=1;i<=n;i++)
{ scanf("%ld",&d[i]); g[i]=0; }
ok=1;
ok=!(d[s]>0);
for (i=1;i<=m;i++)
{
scanf("%ld %ld %ld",&a,&b,&c);
if (d[a]+c==d[b])
g[b]=1;
if (d[a]+c<d[b])
ok=0;
if (d[b]+c==d[a])
g[a]=1;
if (d[b]+c<d[a])
ok=0;
}
for (i=1;i<=n;i++)
if (i!=s)
ok=ok&&g[i];
if (ok)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}