Pagini recente » Cod sursa (job #991755) | Cod sursa (job #1701223)
#include <fstream>
#include <climits>
#define MAX1 50001
#define MAX2 100001
using namespace std;
unsigned short int T;
unsigned short int N, S;
unsigned int M;
unsigned int D[MAX1];
unsigned int path[MAX2];
unsigned int i, j, k;
bool okay;
struct muchie
{
int a, b, c;
};
muchie v[MAX2];
int main()
{
ifstream fin ("distante.in");
ofstream fout ("distante.out");
fin >> T;
while (T)
{
okay = 1;
fin >> N >> M >> S;
for (i=1; i<=N; i++)
fin >> D[i];
for (i=1; i<=M; i++)
fin >> v[i].a >> v[i].b >> v[i].c;
if (D[S] != 0)
okay = 0;
for (i=1; i<=M; i++)
if (D[v[i].a] + v[i].c < D[v[i].b])
okay = 0;
/*
for (i=1; i<=M; i++)
if (v[i].b != S)
{
for (j=1; j<=M; j++)
for (k=1; k<=M; k++)
if (D[v[j].a]+v[i].c != D[v[k].b])
okay = 0;
}
*/
if (okay)
fout << "DA\n";
else
fout << "NU\n";
T--;
}
fin.close();
fout.close();
return 0;
}