Pagini recente » Cod sursa (job #240387) | Cod sursa (job #2980257) | Cod sursa (job #2300787) | Cod sursa (job #1429257) | Cod sursa (job #1410468)
#include <queue>
#include <functional>
#include <fstream>
#include <vector>
using namespace std;
fstream fin("distante.in", ios::in);
fstream fout("distante.out", ios::out);
#define MAXN 50005
int dist[MAXN];
bool found[MAXN];
int main()
{
int T;
fin >> T;
for (; T > 0; T--){
int n, s, x, y, c, m;
bool less = false;
fin >> n >> m >> s;
for (int i = 1; i <= n; i++) fin >> dist[i], found[i] = false;
for (int i = 1; i <= m; i++){
fin >> x >> y >> c;
if ((dist[y] > dist[x] + c) || (dist[x] > dist[y] + c)) { less = true; break; }
if (dist[y] == dist[x] + c) found[y] = true;
if (dist[x] == dist[y] + c) found[x] = true;
}
bool ok = true;
if (less) ok = false;
else for (int i = 1; i <= n; i++)
if (!found[i] && dist[i] > 0) { ok = false; break; }
if (ok) fout << "DA\n";
else fout << "NU\n";
}
fin.close();
fout.close();
return 0;
}