Pagini recente » Cod sursa (job #48460) | Cod sursa (job #1251018) | Cod sursa (job #1530142) | Cod sursa (job #1528273) | Cod sursa (job #1409699)
#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];
int main()
{
int T;
fin >> T;
for (; T > 0; T--){
int n, s, x, y, c, m;
bool found[MAXN], less = false;
fin >> n >> m >> s;
for (int i = 1; i <= n; i++) fin >> dist[i], found[i] = false;
if (!dist[s]) found[s] = true;
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]) { ok = false; break; }
if (ok) fout << "DA\n";
else fout << "NU\n";
}
fin.close();
fout.close();
return 0;
}