Pagini recente » Cod sursa (job #507267) | Cod sursa (job #2394929) | Cod sursa (job #135405) | Cod sursa (job #3199016) | Cod sursa (job #947690)
Cod sursa(job #947690)
#include <fstream>
using namespace std;
ifstream fi("distante.in");
ofstream fo("distante.out");
#define INF 1<<21
struct cell{int x,y,c;}a[50001];
int t,n,m,s,i,j,b[50001];
string check(){
int c[50001],ok=1;
for (i=1; i<=n; i++) c[i]=INF;
c[s]=0;
while (ok){
ok=0;
for (i=1; i<=m; i++)
if (c[a[i].x]+a[i].c<c[a[i].y]) c[a[i].y]=c[a[i].x]+a[i].c;
}
for (i=1; i<=n; i++)
if (b[i]!=c[i]) return "NU\n";
return "DA\n";
}
int main(){
fi >> t;
while (t--){
fi >> n >> m >> s;
for (i=1; i<=n; i++) fi >> b[i];
for (i=1; i<=m; i++) fi >> a[i].x >> a[i].y >> a[i].c;
fo << check();
}
return 0;
}