Pagini recente » Cod sursa (job #389847) | Cod sursa (job #2758852) | Cod sursa (job #2703913) | Cod sursa (job #2099574) | Cod sursa (job #374782)
Cod sursa(job #374782)
#include<fstream.h>
int viz[51000],m,n,t,s,sol[51000],a[101000],b[101000],c[101000],da,gasit,i,j;
int main()
{
ifstream f("distante.in");
ofstream g("distante.out");
f>>t;
for(j=1;j<=t;j++)
{
f>>n>>m>>s;
for(i=1;i<=n;i++)
f>>sol[i];
for(i=1;i<=m;i++)
f>>a[i]>>b[i]>>c[i];
da=1;
if(sol[s])
da=0;
for(i=1;i<=n;i++)
viz[i]=0;
for(i=1;i<=m&&da;i++)
{
if(sol[a[i]]==sol[b[i]]+c[i])
viz[a[i]]=1;
else
if(sol[a[i]]>sol[b[i]]+c[i])
da=0;
if(sol[b[i]]==sol[a[i]]+c[i])
viz[b[i]]=1;
else
if(sol[b[i]]>sol[a[i]]+c[i])
da=0;
}
gasit=0;
for(i=1;i<=n&&!gasit;i++)
if(!viz[i]&&i!=s)gasit=1;
if(gasit)
da=0;
if(da)
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}