Pagini recente » Cod sursa (job #1307600) | Cod sursa (job #3251940) | Cod sursa (job #2316261) | Cod sursa (job #944990) | Cod sursa (job #158532)
Cod sursa(job #158532)
#include<stdio.h>
#define N 50001
#define M 100001
int t,n,m,s,dist[N],ok=1;
struct vec{
int a,b,c;
}v[M];
void solve(void);
void read()
{
int i1,i;
scanf("%d",&t);
for(i1=1;i1<=t;i1++)
{
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=n;i++)
scanf("%d",&dist[i]);
for(i=1;i<=m;i++)
scanf("%d%d%d",&v[i].a,&v[i].b,&v[i].c);
ok=1;
solve();
ok==1?printf("DA\n"):printf("NU\n");
}
}
void solve()
{
int i,j,c=1;
for(i=1;i<=n;i++)
if(dist[i]==0&&s!=i)
ok=0;
for(i=1;i<=n;i++)
if(dist[v[i].a]+v[i].c<dist[v[i].b])
ok=0;
c=1;
for(i=1;i<=n;i++)
if(dist[v[i].a]+v[i].c==dist[v[i].b])
c=0;
if(c)
ok=0;
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
read();
return 0;
}