Pagini recente » Cod sursa (job #1388186) | Cod sursa (job #2314233) | Cod sursa (job #1664971) | Cod sursa (job #2730174) | Cod sursa (job #2791846)
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
const int NMAX = 50001;
int supposedDistance[NMAX];
void solve(fstream& f, fstream& g) {
int n, m, source;
f >> n >> m >> source;
for(int i = 1; i <= n; ++i) {
int d;
f >> d;
supposedDistance[i] = d;
}
if(supposedDistance[source] != 0) {
g << "NU\n";
return;
}
for(int i = 0; i < m; ++i) {
int a, b, c;
f >> a >> b >> c;
if(supposedDistance[a] + c < supposedDistance[b] || supposedDistance[b] + c < supposedDistance[a]) {
g << "NU\n";
return;
}
}
g << "DA\n";
}
int main()
{
fstream f("distante.in", ios::in);
fstream g("distante.out", ios::out);
int t;
f >> t;
for(int i = 0; i < t; ++i)
{
solve(f, g);
}
return 0;
}