Pagini recente » Cod sursa (job #1362397) | Cod sursa (job #1428771)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("distante.in");
ofstream out("distante.out");
int distante[50001];
int ok[50001];
void rez()
{
int i, n, m, k, x, y, z;
in >> n;
in >> m;
in >> k;
for (i = 1;i <= n;i++)
{
in >> distante[i];
ok[i] = 0;
}
ok[k] = 1;
if (distante[k] > 0) { out << "NU\n";return; }
for (i = 1;i <= m;i++)
{
in >> x;
in >> y;
in >> z;
if (distante[x] + z == distante[y])
{
ok[y] = 1;
}
if (distante[y] + z == distante[x])
{
ok[x] = 1;
}
if (distante[x] + z < distante[y] || distante[y] + z < distante[x])
{
out << "NU\n";
return;
}
}
for (i = 1;i <= n;i++)
{
if (ok[i] == 0)
{
out << "NU\n";
return;
}
}
out << "DA\n";
return;
}
int main()
{
int i, n;
in >> n;
for (i = 1;i <= n;i++)
{
rez();
}
}