Cod sursa(job #317794)

Utilizator savimSerban Andrei Stan savim Data 25 mai 2009 09:32:51
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define pb push_back
#define MAX_N 50010

int T, n, m, s, i, j;
int D[MAX_N];
vector <int> A[MAX_N], C[MAX_N];

void cit() {
	scanf("%d %d %d", &n, &m, &s);
	for (i = 1; i <= n; i++) {
		scanf("%d", &D[i]);

		A[i].clear();
		C[i].clear();
	}

	for (i = 1; i <= n; i++) {
		int p, q, c;

		scanf("%d %d %d", &p, &q, &c);

		A[p].pb(q); A[q].pb(p);
		C[p].pb(c); C[q].pb(c);
	}
}

int solve() {
/*	if (D[s] > 0) return 0;

	for (i = 1; i <= n; i++) 
		if (i != s) {
			int len = A[i].size(), son, ok = 0;

			for (j = 0; j < len; j++) {
				son = A[i][j];

				if (D[i] + C[i][j] < D[son])
					return 0;

				if (D[son] + C[i][j] == D[i]) 
					ok = 1;
			}
			if (!ok)
				return 0;
		} */
	
	return 1;
}

int main() {

    freopen("distante.in", "r", stdin);
	freopen("distante.out", "w", stdout);

	scanf("%d", &T);

	while (T--) {
		cit();
		if (solve()) printf("DA\n");
		else printf("NU\n");
	}

	return 0;
}