Pagini recente » Cod sursa (job #3262534) | Cod sursa (job #1705131) | Cod sursa (job #2089122) | Cod sursa (job #2879237) | Cod sursa (job #2060161)
#include <bits/stdc++.h>
using namespace std;
#define INF 999999999
queue <int> q;
vector <int> G[50001],C[50001];
int d1[50001],d2[50001],x,y,c,m,n,p,L,xi,yi;
void bfs(int xs,int d[])
{
q.push(xs);
d[xs]=0;
while(!q.empty()){
x = q.front();
for(int i=0;i<G[x].size();i++){
// ap[p][G[x][i]]=1;
if(d[G[x][i]] > d[x] + C[x][i])
{
d[G[x][i]] = d[x] + C[x][i];
q.push(G[x][i]);
}}
q.pop();
}
}
bool check()
{
for(int i=1;i<=n;i++)
if(d1[i]!=d2[i])
return 0;
return 1;
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&p);
for(int i=1;i<=n;i++)
scanf("%d",&d2[i]);
bool ok=1;
if(d2[p]!=0) ok=0;
while(m--){
scanf("%d %d %d",&x,&y,&c);
if(d2[x]+c <d2[y]) ok=0;
if(d2[y]+c <d2[y] ) ok=0;
}
if(ok)printf("DA\n");
else printf("NU\n");
}
return 0;
}