Pagini recente » Rezultatele filtrării | Borderou de evaluare (job #2793985) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #2483809)
#define DM 50001
#include <bitset>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fi ("distante.in");
ofstream fo ("distante.out");
int bs[DM];
int t, n, m, s, v[DM], a, b, c, ok;
int main() {
fi >> t;
while (t--) {
fi >> n >> m >> s;
memset(bs, 0, sizeof bs);
ok = 1;
bs[s] = 1;
for (int i = 1; i <= n; ++i)
fi >> v[i];
for (int i = 1; i <= m; ++i) {
fi >> a >> b >> c;
if (v[a] + c < v[b] || v[b] + c < v[a])
ok = -1;
if (v[a] + c == v[b] && !bs[b])
bs[b] = 1,
++ok;
if (v[b] + c == v[a] && !bs[a])
bs[a] = 1,
++ok;
}
if (ok == n)
fo << "DA\n";
else
fo << "NU\n";
}
return 0;
}