Pagini recente » Cod sursa (job #2839651) | Cod sursa (job #2747616) | Cod sursa (job #2737059) | Cod sursa (job #1892614) | Cod sursa (job #1365954)
#include <fstream>
#include <string.h>
using namespace std;
fstream f("distante.in",ios::in);
fstream g("distante.out",ios::out);
const int nmax = 50010;
int t, k, i, n, m, s, x, y, c, d[nmax], a[nmax], imposibil;
int main()
{
f >> t;
for (k = 1; k <= t; k++)
{
memset(a, 0, sizeof(a));
memset(d, 0, sizeof(d));
f >> n >> m >> s;
imposibil = 0;
for (i = 1; i <= n; i++)
{
f >> d[i];
if ((i == s) && (d[i] != 0)) imposibil = 1;
}
for (i = 1; i <= m; i++)
{
f >> x >> y >> c;
if (d[x] + c < d[y]) imposibil = 1;
if (d[x] + c == d[y]) a[y] = 1;
if (d[y] + c < d[x]) imposibil = 1;
if (d[y] + c == d[x]) a[x] = 1;
}
for (i = 1; i <= n; i++) if ((!a[i]) && (i != s)) imposibil = 1;
if (imposibil) g << "NU\n";
else g << "DA\n";
}
return 0;
}