Pagini recente » Cod sursa (job #552473) | Cod sursa (job #2565650) | Cod sursa (job #801259) | Cod sursa (job #546770) | Cod sursa (job #868588)
Cod sursa(job #868588)
#include<fstream>
#define nmax 100000
#define inf 999999999
using namespace std;
int n,m,i,j,k,x,y,c,t,T,d[10000],b[100000],s,ok;
struct muchie{
long x,y,c;
}v[nmax];
int main()
{
ifstream f("distante.in");
ofstream g("distante.out");
f>>T;
for(t=1;t<=T;t++)
{
f>>n>>m>>s;
for(j=1;j<=n;j++)
f>>b[j];
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
v[i].x=x;
v[i].y=y;
v[i].c=c;
if(x==s)
d[y]=c;
}
for(i=2;i<=n;i++)
if(d[i]==0)
d[i]=inf;
do{
ok=1;
for(i=2;i<=n;i++)
if(d[v[i].y]>d[v[i].x]+v[i].c)
{
d[v[i].y]=d[v[i].x]+v[i].c;
ok=0;
}
}while(!ok);
for(i=1;i<=n;i++)
if(d[i]==inf)
d[i]=0;
int gasit=0;
for(i=1;i<=n;i++)
if(d[i]!=b[i])
gasit=1;
if(!gasit)
g<<"DA\n";
else g<<"NU\n";
}
}