Cod sursa(job #1322264)

Utilizator mateidanutDanut Gabriel Matei mateidanut Data 19 ianuarie 2015 21:58:31
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include <string.h>
using namespace std;

ifstream f("distante.in");
ofstream g("distante.out");

int d[50001], v[50001], i, j, k, n, m, s, t, ok;

int main()
{	f>>t;
	for (; t; --t)
	{	f>>n>>m>>s;
		for (i=1; i<=n; ++i) f>>d[i];
		if (d[s]!=0)
			g<<"NU\n";
		else
		{	ok=1;
			for (i=1; i<=n; ++i) v[i]=0;
			v[s]=1;
			for (; m && ok; --m)
			{	f>>i>>j>>k;
				if (d[i]+k<d[j]) ok=0;
				else
					if (d[i]+k==d[j]) v[j]=1;
			}
			for (i=1; i<=n && ok; ++i)
				if (!v[i]) ok=0;
			if (ok) g<<"DA\n";
			else g<<"NU\n";
		}
	}
    return 0;
}