Pagini recente » Cod sursa (job #94814) | Cod sursa (job #1249025) | Cod sursa (job #3197979) | Cod sursa (job #1714162) | Cod sursa (job #2103009)
#include <iostream>
#include <queue>
#include <vector>
#include <cstdio>
using namespace std;
int N,M,S,viz[50005],vDistC[50005];
bool citire()
{
int aux1,aux2,aux3;
scanf("%d%d%d",&N,&M,&S);
for(int i=1; i<=N; i++)
{
scanf("%d",&vDistC[i]);
viz[i]=0;
}
if(vDistC[S])
return false;
viz[S]=1;
for(int i=1; i<=M; i++)
{
scanf("%d%d%d",&aux1,&aux2,&aux3);
if(vDistC[aux1]+aux3<vDistC[aux2])
return false;
if(vDistC[aux2]+aux3<vDistC[aux1])
return false;
if(vDistC[aux1]+aux3==vDistC[aux2])
{
viz[aux2]=1;
}
if(vDistC[aux2]+aux3<vDistC[aux1])
{
viz[aux1]=1;
}
}
for(int i=1; i<=N; i++)
if(!viz[i])
return false;
return true;
}
int main()
{
freopen("distante.in","r",stdin);
freopen("distante.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
if(citire())
printf("DA\n");
else
printf("NU\n");
}
return 0;
}