Pagini recente » Cod sursa (job #915311) | Cod sursa (job #2713242) | Cod sursa (job #845149) | Cod sursa (job #1722292) | Cod sursa (job #109168)
Cod sursa(job #109168)
#include<stdio.h>
long int T,nt,n,m,s,i,okok,d[50001],ok[50001],a[100001],b[100001],c[100001];
int main()
{
FILE *f,*g;f=fopen("distante.in","r");g=fopen("distante.out","w");
fscanf(f,"%ld",&T);
for(nt=1;nt<=T;nt++)
{
fscanf(f,"%ld%ld%ld",&n,&m,&s);
for(i=1;i<=n;i++)
{ fscanf(f,"%ld",&d[i]);ok[i]=0;}
for(i=1;i<=m;i++)
fscanf(f,"%ld%ld%ld",&a[i],&b[i],&c[i]);
okok=1;
if(d[s])okok=0;
else
{
for(i=1;i<=m;i++)
{
if(d[a[i]]+c[i]<d[b[i]]){ okok=0;break;}
if(d[b[i]]+c[i]<d[a[i]]){ okok=0;break;}
if(d[b[i]]+c[i]==d[a[i]]) ok[a[i]]=1;
if(d[a[i]]+c[i]==d[b[i]]) ok[b[i]]=1;
}
for(i=1;i<=n;i++)
if(!ok[i]) { okok=0;break;}
}
if(okok) fprintf(g,"DA\n");
else fprintf(g,"NU\n");
}
fcloseall();
return 0;
}