Pagini recente » Cod sursa (job #936163) | Cod sursa (job #194937) | Cod sursa (job #2892417) | Cod sursa (job #1418082) | Cod sursa (job #936257)
Cod sursa(job #936257)
#include<fstream>
#define NM 200100
#define inf 1<<27
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int t,V[NM],A[NM],D[NM],x,y,c,B[NM],C[NM],i,n,m,T,s,OK;
int main ()
{
f>>t;
while(t--)
{
f>>n>>m>>s;
for(i=1;i<=n;++i)
D[i]=inf;
for(i=1;i<=n;++i)
f>>V[i];
D[s]=0;
T=0;
for(i=1;i<=m;++i)
{
f>>x>>y>>c;
A[++T]=x;
B[T]=y;
C[T]=c;
A[++T]=y;
B[T]=x;
C[T]=c;
}
OK=1;
m=2*m;
while(OK)
{
OK=0;
for(i=1;i<=m;++i)
{
if(D[A[i]]+C[i]<D[B[i]]){
D[B[i]]=D[A[i]]+C[i]; OK=1; }
}
}
OK=1;
for(i=1;i<=n;++i)
if(V[i]!=D[i])
{ OK=0; break; }
if(OK)
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}