Pagini recente » Cod sursa (job #845343) | Cod sursa (job #1183430)
#include<fstream>
#define maxn 50004
using namespace std;
ifstream fi("distante.in");
ofstream fo("distante.out");
int t,i,n,m,d[maxn];
int sursa,x,y,cost;
bool done[maxn];
bool ok;
int main(){
fi>>t;
for(;t>0;t--)
{
fi>>n>>m>>sursa;
for(i=1;i<=n;i++) fi>>d[i];
for(i=1;i<=n;i++) done[i]=0;
if(d[sursa]!=0) ok=0;
else { ok=1; done[sursa]=1; }
for(i=1;i<=m;i++){
fi>>x>>y>>cost;
if(d[x]+cost<d[y] || d[y]+cost<d[x]) ok=0;
if(!done[x] && (d[x]==d[y]+cost)) done[x]=1;
if(!done[y] && (d[y]==d[x]+cost)) done[y]=1;
}
for(i=1;i<=n && ok;i++)
if(!done[i]) ok=0;
if(ok) fo<<"DA\n";
else fo<<"NU\n";
}
fi.close();
fo.close();
return 0;
}