Cod sursa(job #2311121)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 2 ianuarie 2019 17:32:21
Problema Distante Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;

ifstream in("distante.in");
ofstream out("distante.out");

const int DIM = 5e4 + 7;

int d[DIM];

void solve()
{
	int n, m, st;
	in >> n >> m >> st;
	
	for(int i = 1; i <= n; i++)
		in >> d[i];
	
	if(d[st] != 0)
	{
		out << "NU\n";
		return ;
	}
	
	vector <pair <int, int> > v[DIM];
	
	while(m--)
	{
		int x, y, c;
		in >> x >> y >> c;
		v[x].push_back({y, c});
	}
	
	for(int i = 1; i <= n; i++)
		for(auto j : v[i])
		{
			int mi = min(d[i], d[j.first]);
			int mx = max(d[i], d[j.first]);
			
			if(mi + j.second < mx)
			{
				out << "NU\n";
				return ;
			}
			
		}
	
	out << "DA\n";
	return ;
}

int main()
{
	int t;
	in >> t;
	
	while(t--)
		solve();
}