Cod sursa(job #821319)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 22 noiembrie 2012 08:14:01
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

long t, n, m, s, n1, n2, cost;
long nod[50010];

int main() {
	freopen("distante.in", "r", stdin);
	freopen("distante.out", "w", stdout);
	
	scanf("%ld", &t);
	
	for (long K = 1; K <= t; ++K) {
		scanf("%ld %ld %ld", &n, &m, &s);
		
		for (long i = 1; i <= n; ++i) {
			scanf("%ld", &nod[i]);
		}
		
		if (nod[s] != 0) {
			printf("NU\n");
			for (long i = 1; i <= m; ++i) {
				scanf("%ld %ld %ld", &n1, &n2, &cost);
			}
		} else {
			long ok = 1;
			for (long i = 1; i <= m; ++i) {
				scanf("%ld %ld %ld", &n1, &n2, &cost);
				if (nod[n1] + cost < nod[n2]) {
					ok = 0;
				}
			}
			if (ok) printf("DA\n");
			else printf("NU\n");
		}
	}
	return 0;
}