Pagini recente » Cod sursa (job #3153791) | Cod sursa (job #2085692) | Cod sursa (job #172285) | Cod sursa (job #2211466) | Cod sursa (job #2215214)
#include <fstream>
#define NMAX 50010
std::ifstream fin("distante.in");
std::ofstream fout("distante.out");
int t;
int n, m, s;
int dp[NMAX];
bool isOK[NMAX];
int main() {
bool ok;
int a, b, c;
fin >> t;
for (int it = 0; it < t; it++) {
fin >> n >> m >> s;
for (int i = 1; i <= n; i++)
fin >> dp[i];
ok = !dp[s];
for (int i = 1; i <= n; i++)
isOK[i] = false;
for (int i = 0; i < m; i++) {
fin >> a >> b >> c;
if (dp[a] + c < dp[b])
ok = false;
else if (dp[a] + c == dp[b])
isOK[b] = isOK[a] = true;
}
if (ok)
for (int i = 1; i <= n; i++)
if (!isOK[i])
ok = false;
fout << (ok ? "DA\n" : "NU\n");
}
fout.close();
return 0;
}