Pagini recente » Cod sursa (job #2537030) | Cod sursa (job #2853933) | Cod sursa (job #2066338) | Cod sursa (job #2496442) | Cod sursa (job #1356502)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("distante.in");
ofstream os("distante.out");
struct Edge{
int nod, cost;
};
int n, m, s, t;
int dmin[50001];
int a, b, c;
bool ok;
int main()
{
is >> t;
string str;
while(t)
{
vector<vector<Edge> > G;
ok = true;
is >> n >> m >> s;
G.resize(n+1);
for( int i = 1; i <= n; ++i )
is >> dmin[i];
for( int i = 1; i <= m; ++i )
{
is >> a >> b >> c;
G[a].push_back({b, c});
G[b].push_back({a, c});
}
for( a = 1; a <= n; ++a )
for( const auto& e : G[a] )
if( dmin[a] + e.cost < dmin[e.nod] || dmin[e.nod] + e.cost < dmin[a] )
ok = false;
if( ok == false )
str = "NU";
else
str = "DA";
os << str << '\n';
--t;
}
is.close();
os.close();
}