Pagini recente » Cod sursa (job #239398) | Cod sursa (job #760022) | Cod sursa (job #1698471) | Cod sursa (job #489716) | Cod sursa (job #1339598)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("distante.in");
ofstream os("distante.out");
int T, n, m, s;
int d[50001];
vector<pair<int, int> > G[50001];
void Read();
bool ok, exista;
int main()
{
is >> T;
for ( int t = 0; t < T; ++t )
{
ok = true;
Read();
if ( !ok )
os << "NU\n";
else
{
for ( int i = 1; i <= n; ++i )
{
exista = false;
for ( const auto& v: G[i] )
if ( d[i] + v.second == d[v.first] )
{
exista = true;
break;
}
if ( exista == false )
{
os << "NU\n";
ok = false;
break;
}
}
if ( ok )
os << "DA\n";
}
}
is.close();
os.close();
return 0;
}
void Read()
{
is >> n >> m >> s;
for ( int i = 1; i <= n; ++i )
{
is >> d[i];
G[i].clear();
}
for ( int i = 0, x, y, c; i < m; ++i )
{
is >> x >> y >> c;
if ( d[x] + c < d[y] )
{
ok = false;
return;
}
G[x].push_back({y, c});
G[y].push_back({x, c});
}
}