Pagini recente » Cod sursa (job #2941476) | Cod sursa (job #2834907) | Cod sursa (job #1289420) | Cod sursa (job #2564413) | Cod sursa (job #947299)
Cod sursa(job #947299)
#include<fstream>
#define inf 1001
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
struct muchie
{
long x,y,c;
}q[100001];
long t;
long n,m,s,gasit;
long d[50001];
long v[50001];
int main()
{
long x,y,c;
long ok;
f>>t;
for(long k=1;k<=t;k++)
{
gasit=0;
f>>n>>m>>s;
for(long j=1;j<=n;j++)
f>>v[j];
for(long j=1;j<=m;j++)
{
f>>x>>y>>c;
q[j].x=x;
q[j].y=y;
q[j].c=c;
if(x==s)
d[y]=c;
if(y==s)
d[x]=c;
}
for(long i=1;i<=n;i++)
if(d[i]==0&&i!=s)
d[i]=inf;
do
{
ok=1;
for(long i=1;i<=m;i++)
if(d[q[i].y]>d[q[i].x]+q[i].c)
{
d[q[i].y]=d[q[i].x]+q[i].c;
ok=0;
}
}while(!ok);
for(long i=1;i<=n;i++)
//{
// g<<d[i]<<" "<<v[i]<<"\n";
//}
if(d[i]!=v[i])
gasit=1;
// g<<d[i]<<" ";
if(!gasit)
g<<"DA"<<"\n";
else g<<"NU"<<"\n";
//g<<"\n";
}
return 0;
}