Pagini recente » Cod sursa (job #1993850) | Cod sursa (job #1694696) | Cod sursa (job #1696863) | Cod sursa (job #1595572) | Cod sursa (job #1765659)
#include <stdio.h>
using namespace std;
const int MAXN = 50000;
int d[MAXN + 1];
bool v[MAXN + 1];
int main()
{
FILE *fin, *fout;
fin = fopen("distante.in", "r");
fout = fopen("distante.out", "w");
int t;
fscanf(fin, "%d", &t);
for(int k = 1; k <= t; k++)
{
int n, m, s;
bool ok = 1;
fscanf(fin, "%d%d%d", &n, &m, &s);
for(int i = 1; i <= n; i++)
{
fscanf(fin, "%d", &d[i]);
}
if(d[s] != 0)
ok = 0;
else
for(int i = 1; i <= m; i++)
{
int a, b, c;
fscanf(fin, "%d%d%d", &a, &b, &c);
if(d[a] + c < d[b])
{
ok = 0;
break;
}
if(d[b] == d[a] + c)
v[b] = 1;
}
for(int i = 1; i <= n; i++)
{
if(i != s && v[i] == 0)
ok = 0;
v[i] = 0;
}
if(ok == 1)
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
return 0;
}