Pagini recente » Cod sursa (job #2630866) | Cod sursa (job #2443902) | Cod sursa (job #2364433) | Cod sursa (job #1376037) | Cod sursa (job #632241)
Cod sursa(job #632241)
#include<fstream>
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
struct tip {long x,y,t;
};
tip a[250001];
long v[55001],n,m,i,T,k,aux[50001],s;
int ok;
int main()
{ fin >> T;
for (k=1;k<=T;++k)
{ fin >> n >> m >> s;
for (i=1;i<=n;++i)
fin >> aux[i];
for (i=1;i<m;++i)
fin >> a[i].x >> a[i].y >> a[i].t;
for (i=1;i<=n+2;++i)
v[i] = -1;
v[s] = 0;
ok = 1;
while (ok)
{ --ok;
for (i=1;i<=m-1;++i)
if ((v[a[i].x] != -1) && ((v[a[i].y] == -1) || (v[a[i].y] > v[a[i].x]+a[i].t)))
{ v[a[i].y] =v[a[i].x]+a[i].t;
++ok;
}
}
i=1;
while (v[i] == aux[i] && i!=n)
++i;
if (v[i] != aux[i])
fout << "NU" << '\n';
else
fout << "DA" << '\n';
}
return 0;
}