Pagini recente » Statistici Roberta Buzatu (robybuzatu) | Istoria paginii runda/pt_round12 | Cod sursa (job #2084833) | Cod sursa (job #1462780) | Cod sursa (job #1804593)
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#define MaxN 100005
using namespace std;
FILE *IN,*OUT;
int N,M,S,T,v[MaxN],Obt,X,Y,Z;
bool obtain[MaxN];
int main()
{
IN=fopen("distante.in","r");
OUT=fopen("distante.out","w");
fscanf(IN,"%d",&T);
for(int t=1;t<=T;t++)
{
fscanf(IN,"%d%d%d",&N,&M,&S);
memset(obtain,0,sizeof obtain);
for(int i=1;i<=N;i++)
fscanf(IN,"%d",&v[i]);
if(v[S]!=0)
{
fprintf(OUT,"NU\n");
}
else
{
Obt=1;
for(int i=1;i<=M;i++)
{
fscanf(IN,"%d%d%d",&X,&Y,&Z);
if(v[X]+Z<v[Y]||v[Y]+Z<v[X])
{
Obt=-1;
break;
}
else if(!obtain[Y]&&v[X]+Z==v[Y])
obtain[Y]=true,Obt++;
else if(!obtain[X]&&v[Y]+Z==v[Y])
obtain[X]=true,Obt++;
}
if(Obt==-1)
fprintf(OUT,"NU\n");
else if(Obt==N)
fprintf(OUT,"DA\n");
else
fprintf(OUT,"NU\n");
}
}
return 0;
}