Pagini recente » Cod sursa (job #905892) | Cod sursa (job #851370) | Cod sursa (job #300676) | Cod sursa (job #1670251) | Cod sursa (job #1450750)
#include <fstream>
#include <vector>
using namespace std;
#define Nmax 50001
vector< bool > ok(Nmax);
int d[Nmax];
int main()
{
freopen("distante.in", "r", stdin);
freopen("distante.out", "w", stdout);
int i, t, n, m, s, a, b, c;
bool is_sol;
for(scanf("%d", &t); t; --t)
{
scanf("%d %d %d", &n, &m, &s);
for(int i = 1; i <= n; ++i) scanf("%d", d + i);
if(d[s] == 0) ok[s] = 1, is_sol = 1;
else is_sol = 0;
for(; m; --m)
{
scanf("%d %d %d", &a, &b, &c);
if(d[a] + c == d[b]) ok[b] = 1;
else if(d[a] + c < d[b]) is_sol = 0;
if(d[b] + c == d[a]) ok[a] = 1;
else if(d[b] + c < d[a]) is_sol = 0;
}
if(is_sol) printf("DA\n");
else printf("NU\n");
fill(ok.begin(), ok.end(), 0);
}
return 0;
}