Pagini recente » Cod sursa (job #1077268) | Cod sursa (job #2090676) | Cod sursa (job #2708023) | Cod sursa (job #595445) | Cod sursa (job #134458)
Cod sursa(job #134458)
#include <cstdio>
#include <vector>
using namespace std;
#define pb push_back
vector<int> l[50100], C[50100];
int x[50100], v[50100],k;
void DF(int nod)
{
v[nod] = ++k;;
for (int i=0;i<l[nod].size();++i)
if ((!v[l[nod][i]])&&(x[nod]+C[nod][i] == x[l[nod][i]]))
DF(l[nod][i]);
}
void solve()
{
int a,b,c,n,m,s;k=0;
scanf("%d%d%d", &n,&m,&s);
for (int i=1;i<=n;++i)
{
scanf("%d", &x[i]);
v[i] = 0;
l[i].clear();
C[i].clear();
}
for (int i=1;i<=m;++i)
{
scanf("%d%d%d",&a,&b,&c);
if(a!=b)
{
l[a].pb(b);
C[a].pb(c);
l[b].pb(a);
C[b].pb(c);
}
}
DF(s);
if (k==n) printf("DA\n"); else printf("NU\n");
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
int t;
scanf("%d", &t);
while(t--) solve();
return 0;
}