Pagini recente » Cod sursa (job #1076863) | Cod sursa (job #2719794) | Cod sursa (job #169112) | Cod sursa (job #3210850) | Cod sursa (job #294797)
Cod sursa(job #294797)
#include <fstream.h>
#define dim 100005
ifstream fin("distante.in");
ofstream fout("distante.out");
struct muchie{long x,y,cost;};
muchie c[dim];
char v[dim];
long d[dim];
long n,m,r;
void solve()
{long i,j;
int sw=1;
for (i=1;i<=m && sw;i++)
if (d[c[i].x]+c[i].cost<d[c[i].y] && d[c[i].y]+c[i].cost<d[c[i].x]) sw=0;
else
{if (d[c[i].x]+c[i].cost==d[c[i].y])
v[c[i].y]=1;
if (d[c[i].y]+c[i].cost==d[c[i].x])
v[c[i].x]=1;
}
for (i=1;i<=n && sw; i++)
if (v[i]==0 && i!=r)
sw=0;
else
if (v[i]==1 && i==r) sw=0;
if (sw) fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
int main()
{long i;
int t,j;
fin>>t;
for (j=1;j<=t;j++)
{fin>>n>>m>>r;
memset(v,0,sizeof(v));
memset(d,0,sizeof(d));
for (i=1;i<=n;i++) fin>>d[i];
for (i=1;i<=m;i++) fin>>c[i].x>>c[i].y>>c[i].cost;
if (d[r]==0) solve();
else
fout<<"NU"<<'\n';
}
fout.close();
return 0;
}