Cod sursa(job #1322258)

Utilizator mateidanutDanut Gabriel Matei mateidanut Data 19 ianuarie 2015 21:52:17
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 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;
			memset(v, 0, sizeof(v));

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