Pagini recente » Cod sursa (job #1753180) | Cod sursa (job #1101427) | Cod sursa (job #1463075) | Monitorul de evaluare | Cod sursa (job #1322337)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("distante.in");
ofstream os("distante.out");
int t, n, m, s;
void Solve();
int main()
{
is >> t;
while ( t-- )
Solve();
is.close();
os.close();
return 0;
}
void Solve()
{
int a, b, c;
bool answ = false;
is >> n >> m >> s;
vector<int> d(n + 1);
vector<bool> ok(n + 1);
ok[s] = true;
if ( d[s] )
answ = true;
for ( int i = 1; i <= n; ++i )
is >> d[i];
for ( int i = 1; i <= n; ++i )
{
is >> a >> b >> c;
if ( d[a] + c < d[b] || d[b] + c < d[a] )
answ = 1;
if ( d[a] + c == d[b] )
ok[b] = true;
if ( d[b] + c == d[a] )
ok[a] = true;
}
if ( answ )
{
os << "NU\n";
return;
}
for ( int i = 1; i <= n; ++i )
if ( !ok[i] )
{
os << "NU\n";
return;
}
os << "DA\n";
}