Cod sursa(job #1322320)

Utilizator mateidanutDanut Gabriel Matei mateidanut Data 19 ianuarie 2015 22:31:53
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <fstream>
using namespace std;

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

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

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