Cod sursa(job #3201220)
Utilizator | Milandru Nicon-David DomnulMilandru | Data | 7 februarie 2024 10:27:19 |
---|---|---|---|
Problema | Distante | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.06 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("distante.in");
ofstream cout("distante.out");
int t;
int n,m,s;
int x,y,c;
vector<int> D;
vector<bool> fr;
int main()
{
cin>>t;
for(int i=0;i<t;i++)
{
cin>>n>>m>>s;
D.resize(0);
D.resize(n+1);
for(int i=1;i<=n;i++)
cin>>D[i];
if(!D[s])
{
bool ok=1;
fr.resize(0);
fr.resize(n+1);
for(int j=0;j<m;j++)
{
cin>>x>>y>>c;
if(D[x]+c<D[y])
ok=0;
if(D[x]+c==D[y])
fr[y]=1;
}
for(int i=1;i<=n;i++)
if(!fr[i] && i!=s)
{
ok=0;
break;
}
if(ok==1)
cout<<"DA";
else
cout<<"NU";
}
else
cout<<"NU";
cout<<'\n';
}
return 0;
}