Pagini recente » Cod sursa (job #2875381) | Cod sursa (job #1520041) | Cod sursa (job #1023264) | Cod sursa (job #2981179) | Cod sursa (job #1027975)
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define INF 500000000
#define MAXN 50005
using namespace std;
int main(){
int n,m,t,s,x,y,c;
vector<int> dTest(MAXN);
bitset<MAXN> okRang;
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
//ifstream in("distante.in");
//ofstream out("distante.out");
//in>>t;
scanf("%d",&t);
while(t--){
//in>>n>>m>>s;
scanf("%d %d %d",&n,&m,&s);
for(int i=1;i<=n;i++) {
//in>>dTest[i];
scanf("%d",&dTest[i]);
okRang[i] = false;
}
bool ok = true;
for(int i=0;i<m;i++) {
//in>>x>>y>>c;
scanf("%d %d %d",&x,&y,&c);
if(dTest[x]+c<dTest[y])
ok = false;
if(dTest[y]+c<dTest[x])
ok=false;
if(dTest[x]+c==dTest[y])
okRang[y] = true;
if(dTest[y]+c==dTest[x])
okRang[x] = true;
}
okRang[s] = (dTest[s] == 0);
for(int i=1;i<=n;i++)
if(!okRang[i])
{ ok = false;break;}
//if(ok) out<<"DA\n";
//else out<<"NU\n";
if(ok) printf("DA\n");
else printf("NU\n");
}
return 0;
}