Pagini recente » Cod sursa (job #3171599) | Cod sursa (job #2447451) | Cod sursa (job #119146) | Cod sursa (job #2528996) | Cod sursa (job #380350)
Cod sursa(job #380350)
#include<stdio.h>
int nr,n,m,s;
int a[5001][5001],lung[5000],yes,d,j,x,c,y,k,poz,i,viz[5001],min,ii,coada[5000],st=0,dr=0;
int main()
{
freopen ("distante.in","r",stdin);
freopen("distante.out","w",stdout);
scanf("%d",&nr);
for(d=1;d<=nr;d++)
{
yes=1;
st=0;
dr=0;
scanf("%d%d%d",&n,&m,&s);
for(j=1;j<=m;j++)
{
scanf("%d%d%d",&x,&y,&c);
a[x][y]=c;
}
for(j=1;j<=n;j++)
scanf("%d",&lung[j]);
k=1;
poz=s;
for(i=1;i<=n;i++)
viz[i]=0;
viz[poz]=1;
while( st<=dr && yes)
{
for(j=1;j<=n;j++)
{
if(a[poz][j] != 0 && (! viz[j]))
{
coada[dr++]=j;
if(lung[j]< lung[poz]+a[poz][j])
{
printf("NU");
yes=0;
break;
}
}
}
viz[poz]=1;
poz=coada[++st];
}
if(yes)
printf("DA\n");
}
printf("\n");
}