Pagini recente » Cod sursa (job #3319478) | Cod sursa (job #727130) | Cod sursa (job #3355832) | Cod sursa (job #961809) | Cod sursa (job #3330883)
// Ilie "The-Winner" Dumitru
// Dumnezeu sa o ierte
#include<bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define err(...) fprintf(stderr, __VA_ARGS__)
using ll=long long;
using dbl=long double;
constexpr int NMAX=50'005;
constexpr ll MOD=1'000'000'007;
int N, M, S;
int d[NMAX];
int e[NMAX];
int root(int x)
{
if(e[x]<0)
return x;
return e[x]=root(e[x]);
}
void merge(int a, int b)
{
a=root(a);
b=root(b);
if(a==b)
return;
if(e[a]>e[b])
std::swap(a, b);
e[a]+=e[b];
e[b]=a;
}
int main()
{
FILE* f=fopen("distante.in", "r"), *g=fopen("distante.out", "w");
int _, i, a, b, c;
fscanf(f, "%d", &_);
do
{
fscanf(f, "%d%d%d", &N, &M, &S);
--S;
std::fill(e, e+N, -1);
for(i=0;i<N;++i)
fscanf(f, "%d", d+i);
for(i=0;i<M;++i)
{
fscanf(f, "%d%d%d", &a, &b, &c);
--a;
--b;
if(std::abs(d[a]-d[b])==c)
merge(a, b);
}
if(e[root(0)]==-N)
fprintf(g, "DA\n");
else
fprintf(g, "NU\n");
}while(--_);
fclose(f);
fclose(g);
return 0;
}