Pagini recente » Cod sursa (job #1273850) | Cod sursa (job #2173411) | Cod sursa (job #2140585) | Cod sursa (job #1089359) | Cod sursa (job #2302870)
#include <istream>
#include <cstdio>
#include <cstring>
#define N 50005
using namespace std;
int n, m, st, t, d[N], viz[N];
int citire(int m, int n, int st)
{
int x, y, c, ok=1;
if(d[st]!=0)
ok=0;
for(int i=0;i<m;i++)
{
scanf("%d %d %d", &x, &y, &c);
if(d[y]>d[x]+c || d[x]>d[y]+c)
ok=0;
if(d[y]==d[x]+c)
viz[y]=1;
if(d[x]==d[y]+c)
viz[x]=1;
}
if(!ok)
return 0;
for(int i=1;i<=n;i++)
if(viz[i]==0)
return 0;
return 1;
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d\n", &t);
for(int test=0;test<t;test++)
{
scanf("%d %d %d\n", &n, &m, &st);
memset(viz, 0, sizeof(viz));
viz[st]=1;
for(int i=1;i<=n;i++)
scanf("%d ",&d[i]);
if(citire(m, n, st))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}