Pagini recente » Cod sursa (job #2582213) | Cod sursa (job #3143155) | Cod sursa (job #1479885) | Cod sursa (job #2180777) | Cod sursa (job #1249255)
#include <fstream>
using namespace std;
ifstream is("distante.in");
ofstream os("distante.out");
int T;
int N, M, S;
int a, b, c;
int D[50001];
bool Sol;
bool F[50001];
void Query();
bool Check();
int main()
{
is >> T;
for ( int i = 1; i <= T; ++i )
Query();
is.close();
os.close();
}
void Query()
{
is >> N >> M >> S;
Sol = 1;
for ( int i = 1; i <= N; ++i )
is >> D[i];
if ( D[S] ) Sol = 0;
for ( int i = 1; i <= M; ++i )
{
is >> a >> b >> c;
if ( D[a] + c < D[b] )
Sol = 0;
if ( D[b] + c < D[a] )
Sol = 0;
if ( D[a] + c == D[b] )
F[b] = 1;
if ( D[b] + c == D[a] )
F[a] = 1;
}
if ( !Check() ) Sol = 0;
if ( Sol )
os << "DA\n";
else
os << "NU\n";
}
bool Check()
{
bool Pr(1);
for ( int i = 1; i <= N; ++i )
{
if ( !F[i] && i != S)
Pr = 0;
F[i] = 0;
}
return Pr;
}