Pagini recente » Cod sursa (job #1128782) | Cod sursa (job #1220335) | Cod sursa (job #2310222) | Cod sursa (job #542088) | Cod sursa (job #252294)
Cod sursa(job #252294)
#include<fstream.h>
ifstream f("distante.in");
ofstream g("distante.out");
long n,m,d[50010],s;
int t;
struct elem
{
long inf;
int cost;
elem *urm;
}*a[50010];
void citire()
{
long i,x,y,co;
elem *p;
f>>n>>m>>s;
for( i=1;i<=n;i++)
f>>d[i];
for(i=0;i<m;i++)
{
f>>x>>y>>co;
p=new elem;
p->inf=y;
p->cost=co;
p->urm=a[x];
a[x]=p;
p=new elem;
p->inf=x;
p->cost=co;
p->urm=a[y];
a[y]=p;
}
}
void init()
{
long i;
for(i=1;i<=n;i++)
a[i]=NULL;
}
int parcurg()
{
long i;
if(d[s]!=0)
return 0;
else
{
for(int i=1;i<=n;i++)
{
elem *p=a[i];
while(p)
{
if(d[i]>d[p->inf]+p->cost)
return 0;
p=p->urm;
}
}
return 1;
}
}
int main()
{long i;
f>>t;
for(i=0;i<t;i++)
{
init();
citire();
if(parcurg())
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
g.close();
return 0;
}