Pagini recente » Cod sursa (job #2869430) | Cod sursa (job #2830937) | Cod sursa (job #746557) | Cod sursa (job #2713626) | Cod sursa (job #1347418)
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int vec[50005],n,m,s,a,b,c,t;
bool rez[50005];
bool verif(){
if(vec[s]!=0){
return false;
}
memset(rez,false,sizeof(rez));
rez[s]=true;
for(int qq=1;qq<=m;qq++){
scanf("%d%d%d",&a,&b,&c);
if(vec[a]+c<vec[b])
return false;
if(vec[b]+c<vec[a])
return false;
if(vec[a]+c==vec[b])
rez[b]=true;
if(vec[b]+c==vec[a])
rez[a]=true;
}
for(int i=1;i<=n;i++)
if(rez[i]==false)
return false;
return true;
}
int main(){
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d",&t);
for(int q=1;q<=t;q++){
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=n;i++){
scanf("%d",&vec[i]);
}
if(verif()==false)
printf("NU\n");
else
printf("DA\n");
}
return 0;
}