Pagini recente » Cod sursa (job #522568) | Cod sursa (job #2590537) | Cod sursa (job #1910320) | Cod sursa (job #2489314) | Cod sursa (job #821852)
Cod sursa(job #821852)
#include<stdio.h>
#define nmax 50005
long n, m, s, t, ii, d[nmax], a, b, c, i, nrg;
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; nrg=0;
ok=!(d[s]>0);
for (i=1;i<=m;i++)
{
scanf("%ld %ld %ld",&a,&b,&c);
if (ok)
{
if (d[a]+c==d[b])
{ nrg+=1-g[b]; g[b]=1; }
if (d[a]+c<d[b])
ok=0;
if (d[b]+c==d[a])
{ nrg+=1-g[a]; g[a]=1; }
if (d[b]+c<d[a])
ok=0;
}
}
ok=ok&&(nrg==(n-1));
if (ok)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}