Pagini recente » Cod sursa (job #726550) | Cod sursa (job #1054221) | Cod sursa (job #2167487) | Cod sursa (job #2222222) | Cod sursa (job #2199137)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5;
bitset < MAXN + 1 > bit;
int dist[MAXN + 1];
int main() {
FILE *fin, *fout;
int t, n, m, s, i, x, y, c;
fin = fopen ("distante.in", "r");
fout = fopen ("distante.out", "w");
fscanf (fin, "%d", &t);
while (t--) {
fscanf (fin, "%d%d%d", &n, &m, &s);
for (i = 1; i <= n; i++)
fscanf (fin, "%d", &dist[i]);
for (i = 1; i <= m; i++) {
fscanf (fin, "%d%d%d", &x, &y, &c);
if (dist[x] + c >= dist[y] && dist[y] + c >= dist[x]) {
if (dist[x] + c == dist[y])
bit.set (y, 1);
if (dist[y] + c == dist[x])
bit.set (x, 1);
}
}
if (bit.count () == n - 1 && dist[s] == 0)
fprintf (fout, "DA\n");
else
fprintf (fout, "NU\n");
}
fclose (fin);
fclose (fout);
return 0;
}