Pagini recente » Cod sursa (job #1575863) | Cod sursa (job #1513595) | Cod sursa (job #2221173) | Cod sursa (job #1647820) | Cod sursa (job #611229)
Cod sursa(job #611229)
#include <cstdio>
#include <cstring>
#define nmax 50001
using namespace std;
int d[nmax], n, m, t, rez[nmax];
void citire(){
freopen("distante.in", "r", stdin);
freopen("distante.out", "w", stdout);
scanf("%d\n", &t);
}
void rezolva(){
for(; t; t--){
int s, ver=0;
scanf("%d %d %d", &n, &m, &s);
for(int i=1; i<=n; i++) rez[i] = 0;
for(int i=1; i<=n; i++) scanf("%d ", &d[i]);
rez[s]=1;
for(int i=1; i<=m; i++){
int x, y, c;
scanf("%d %d %d", &x, &y, &c);
if (d[x] + c < d[y] || d[y] + c < d[x]) ver=1;
if (d[x] + c == d[y]) rez[y] = 1;
if (d[y] + c == d[x]) rez[x] = 1;
}
if (d[s] != 0) ver = 1;
if (ver) printf("NU\n");
else{
for(int i=1; i<=n; i++)
if (rez[i]==0){
ver = 1;
break;
}
if (ver) printf("NU\n");
else printf("DA\n");
}
}
}
int main(){
citire();
rezolva();
return 0;
}