Cod sursa(job #1409676)

Utilizator theprdvtheprdv theprdv Data 30 martie 2015 17:34:41
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <queue>
#include <functional>
#include <fstream>
#include <vector>

using namespace std;

fstream fin("distante.in", ios::in);
fstream fout("distante.out", ios::out);

#define MAXN 50005
int dist[MAXN];

int main() 
{
	int T;
	fin >> T;

	for (; T > 0; T--){
		int n, s, x, y, c, m;
		bool found[MAXN] = { false }, less = false;

		fin >> n >> m >> s;
		for (int i = 1; i <= n; i++) fin >> dist[i], found[i] = false;
		if (!dist[s]) found[s] = true;

		for (int i = 1; i <= m; i++){
			fin >> x >> y >> c;
			if (dist[y] > dist[x] + c) { less = true; break; }
			if (dist[y] == dist[x] + c) found[y] = true;
		}
		if (less) fout << "NU\n";
		else {
			for (int i = 1; i <= n; i++)
				if (!found[i]){
					fout << "NU\n";
					break;
				}
			fout << "DA\n";
		}
	}

	fout.close();
	return 0;
}