Pagini recente » Cod sursa (job #244496) | Cod sursa (job #328339) | Cod sursa (job #1269467) | Cod sursa (job #1160485) | Cod sursa (job #252292)
Cod sursa(job #252292)
#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()
{
int x,y,co;
elem *p;
f>>n>>m>>s;
for(int 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()
{
for(int i=0;i<n;i++)
a[i]=NULL;
}
int parcurg()
{
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()
{f>>t;
for(int i=0;i<t;i++)
{
init();
citire();
if(parcurg())
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
g.close();
return 0;
}