Cod sursa(job #608262)
#include<stdio.h>
#include<vector.h>
#define pb push_back
#define N 50001
int c,t;
long i,k,n,m,s,l,j,d[N];
vector<long> g[N],e[N];
int main()
{freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d",&t);
while(t--)
{scanf("%ld%ld%ld",&n,&m,&s);
for(i=1;i<=n;i++)
scanf("%ld",&d[i]);
while(m--)
{scanf("%ld%ld%d",&i,&k,&c);
g[i].pb(k);
g[k].pb(i);
e[i].pb(c);
e[k].pb(c);}
k=0;
if(d[s])
k=1;
for(i=1;i<=n;i++)
if(i!=s)
{l=0;
for(j=0;j<g[i].size();j++)
if(d[i]!=e[i][j]+d[j])
l++;
if(l==g[i].size())
{k=1;
break;}}
if(!k)
printf("DA\n");
else
printf("NU\n");}
return 0;}