Pagini recente » Cod sursa (job #1447109) | Cod sursa (job #2835293) | Cod sursa (job #510186) | Cod sursa (job #2764308) | Cod sursa (job #1347354)
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int vec[50001],n,m,s,a,b,c,t;
bool rez[50001];
bool verif(){
if(vec[s]!=0){
return false;
}
memset(rez,false,n);
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;
}