Cod sursa(job #821318)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 22 noiembrie 2012 08:13:20
Problema Distante Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

long t, i, n, m, s, n1, n2, cost;
short 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 (i = 1; i <= n; ++i) {
			scanf("%ld", &nod[i]);
		}
		
		if (nod[s] != 0) {
			printf("NU\n");
			for (i = 1; i <= m; ++i) {
				scanf("%ld %ld %ld", &n1, &n2, &cost);
			}
		} else {
			long ok = 1;
			for (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;
}