Cod sursa(job #513961)

Utilizator ChallengeMurtaza Alexandru Challenge Data 17 decembrie 2010 14:41:51
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

const char InFile[]="distante.in";
const char OutFile[]="distante.out";
const int MaxN=50111;

ifstream fin(InFile);
ofstream fout(OutFile);

int D[MaxN],x,y,cost,M,N,T,S,C[MaxN];
bool ok;

int main()
{
	fin>>T;
	for(register int t=0;t<T;++t)
	{
		fin>>N>>M>>S;
		for(register int i=1;i<=N;++i)
		{
			fin>>D[i];
		}
		for(register int i=0;i<M;++i)
		{
			fin>>x>>y>>cost;
			if(D[x]+cost==D[y])
			{
				C[y]=1;
			}
			if(D[y]+cost==D[x])
			{
				C[x]=1;
			}
		}
		if(D[S]==0)
		{
			C[S]=1;
		}
		ok=true;
		for(register int i=1;i<=N;++i)
		{
			if(C[i]==0)
			{
				ok=false;
				break;
			}
		}
		if(ok)
		{
			fout<<"DA\n";
		}
		else
		{
			fout<<"NU\n";
		}
		for(register int i=1;i<=N;++i)
		{
			C[i]=0;
		}
	}

	fin.close();
	fout.close();
	return 0;
}