Cod sursa(job #294732)

Utilizator StigmaSimina Pitur Stigma Data 2 aprilie 2009 18:44:47
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#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;
 int sw=1;
 
for (i=1;i<=m && sw;i++)
 if (d[c[i].x]+c[i].cost<d[c[i].y]) sw=0;
  else
	  if (d[c[i].x]+c[i].cost==d[c[i].y]) v[c[i].y]=1;

for (i=1;i<=n && sw; i++)
	if (v[i]==0 && 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;
}