Pagini recente » Cod sursa (job #1627992) | Cod sursa (job #1162175)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <utility>
#define NMax 50003
#define INF 1<<28
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
int n,m,s,t,x;
int nod1,nod2,cost;
std::vector<int> a,d(NMax);
int main()
{
fin>>t;
bool ok;
for(int k=1;k<=t;++k)
{
ok = true;
fin>>n>>m>>s;
a.push_back(0);
for(int i=1;i<=n;++i)
{
fin>>x;
a.push_back(x);
d[i] = 0;
}
d[s] = 1;
for(int i=1;i<=m;++i)
{
fin>>nod1>>nod2>>cost;
if(a[nod1]+cost<a[nod2]||a[nod2]+cost<a[nod1])ok = false;
if(a[nod1]+cost==a[nod2]&&d[nod2]==0)d[nod2] = 1;
if(a[nod2]+cost==a[nod1]&&d[nod1]==0)d[nod1] = 1;
}
if(ok)
{
for(int i=1;i<=n;++i)
{
if(d[i]==0)
{
ok = false;
break;
}
}
}
if(!ok)fout<<"NU"<<'\n';
else fout<<"DA"<<'\n';
a.clear();
}
return 0;
}