Pagini recente » Autentificare | Cod sursa (job #1554944) | Cod sursa (job #496669) | Cod sursa (job #1139920) | Cod sursa (job #2169232)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
int dist[50001];
bitset<50001> b;
int main()
{
int T, x, y, c, n, m, s;
fin >> T;
while (T--)
{
bool gresit = false;
b.reset();
fin >> n >> m >> s;
for (int i = 1; i <= n; i++)
fin >> dist[i];
while (m--)
{
fin >> x >> y >> c;
if (dist[x] + c < dist[y] || dist[y] + c < dist[x])
gresit = false;
else if (dist[x] + c == dist[y])
b.set(y, 1);
else if (dist[y] + c == dist[x])
b.set(x, 1);
}
if (b.count() != n - 1 || dist[s] != 0)
gresit = true;
if (gresit)
fout << "NU\n";
else
fout << "DA\n";
}
}