Cod sursa(job #2483809)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 30 octombrie 2019 12:54:15
Problema Distante Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#define DM 50001
#include <bitset>
#include <fstream>
#include <string.h>
using namespace std;

ifstream fi ("distante.in");
ofstream fo ("distante.out");
int bs[DM];
int t, n, m, s, v[DM], a, b, c, ok;

int main() {
	fi >> t;
	while (t--) {
		fi >> n >> m >> s;
		memset(bs, 0, sizeof bs);
		ok = 1;
		bs[s] = 1;
		for (int i = 1; i <= n; ++i)
			fi >> v[i];
		for (int i = 1; i <= m; ++i) {
			fi >> a >> b >> c;
			if (v[a] + c < v[b] || v[b] + c < v[a])
				ok = -1;
			if (v[a] + c == v[b] && !bs[b])
				bs[b] = 1,
				++ok;
			if (v[b] + c == v[a] && !bs[a])
				bs[a] = 1,
				++ok;
		}
		if (ok == n)
			fo << "DA\n";
		else
			fo << "NU\n";
	}
	return 0;
}