Pagini recente » Cod sursa (job #1831164) | Cod sursa (job #1780817) | Cod sursa (job #2106003) | Cod sursa (job #2406917) | Cod sursa (job #1374024)
#include <fstream>
using namespace std;
ifstream fin("distante.in");
ofstream fout("distante.out");
int t,n,m,s;
int d[50001];
bool viz[50001];
void inutil(int i)
{
int a,b,c;
i++;
while(i<=m)
{
fin>>a>>b>>c;
i++;
}
}
void citire()
{
fin>>t;
int a,b,c,i;
while(t)
{
fin>>n>>m>>s;
for(i=1;i<=n;i++)
viz[i]=0;
for(i=1;i<=n;i++)
fin>>d[i];
if(d[s])
{
inutil(0);
fout<<"NU"<<'\n';
}
else
{
viz[s]=1;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
if(d[a]>d[b]+c)
{
inutil(i);
i=m+1;
}
else if(d[a]==d[b]+c)
{
viz[a]=1;
}
if(d[b]>d[a]+c)
{
inutil(i);
i=m+1;
}
else if(d[b]==d[a]+c)
{
viz[b]=1;
}
}
if(i==m+2)
fout<<"NU"<<'\n';
else
{
for(i=1;i<=n;i++)
if(!viz[i])
{
fout<<"NU"<<'\n';
i=n+1;
}
if(i==n+1)
fout<<"DA"<<'\n';
}
}
t--;
}
}
int main()
{
citire();
return 0;
}