Pagini recente » Cod sursa (job #191593) | Cod sursa (job #1973413) | Cod sursa (job #1680425) | Cod sursa (job #1063684) | Cod sursa (job #590191)
Cod sursa(job #590191)
#include<stdio.h>
#define Nmax 50005
#define inf 2000000000
int T, S, v[2*Nmax][3], c[Nmax], n, m, i, j, ok, qwer, D[Nmax];
int main (){
freopen ("distante.in", "r", stdin);
freopen ("distante.out", "w", stdout);
scanf("%d", &T);
for (qwer = 1 ; qwer <= T ; qwer++){
scanf("%d %d %d", &n, &m, &S);
for (i = 1 ; i < S ; i++)
c[i] = inf;
for (i = S+1 ; i <= n ; i++)
c[i] = inf;
for (i = 1 ; i <= n ; i++)
scanf("%d", &D[i]);
for (i = 1 ; i <= m ; i++){
scanf ("%d %d %d", &v[i][0], &v[i][1], &v[i][2]);
if (v[i][0] == 1)
c[ v[i][1] ] = v[i][2];
}
ok = 0
while (!ok){
ok = 1;
for (i = 1 ; i<= m ; i++)
if (c[ v[i][1] ] > c[ v[i][0] ] + v[i][2]){
c[ v[i][1] ] = c[ v[i][0] ] + v[i][2];
ok = 0;
}
}
ok = 1
for (i = 1 ; i <= n ; i++)
if (c[i] != D[i])
ok = 0;
if (ok == 1) printf("DA\n");
else printf("NU\n");
}
return 0;
}