Pagini recente » Cod sursa (job #222460) | Cod sursa (job #2109676) | Cod sursa (job #1257161) | Cod sursa (job #1255763) | Cod sursa (job #1409676)
#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] = { false }, 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) { less = true; break; }
if (dist[y] == dist[x] + c) found[y] = true;
}
if (less) fout << "NU\n";
else {
for (int i = 1; i <= n; i++)
if (!found[i]){
fout << "NU\n";
break;
}
fout << "DA\n";
}
}
fout.close();
return 0;
}