Pagini recente » Cod sursa (job #2594558) | Cod sursa (job #241668) | Cod sursa (job #635066) | Cod sursa (job #2416564) | Cod sursa (job #273408)
Cod sursa(job #273408)
#include <fstream.h>
#define N 50001
ifstream in("distante.in");
ofstream out("distante.out");
int t,n,m,s,df[N],di[N];
struct mu{int y,c;
mu *urm;} *muc[N];
void adauga(mu *&prim,int y,int c){
mu *p;
p = new mu;
p->y = y;
p->c = c;
p->urm = prim;
prim = p;
}
void solve(){
int i,x,y,c,ok,ok2;
mu *p;
in>>t;
for(;t>0;t--){
in>>n>>m>>s;
for(i=1;i<=n;++i){in>>df[i];muc[i] = NULL;}
for(i=1;i<=n;++i){
in>>x>>y>>c;
adauga(muc[x],y,c);
adauga(muc[y],x,c);
}
ok = ok2 = 0;
for(i=1;i<=n && !ok && !ok2;++i){
if(i != s){
ok2 = 1;
for(p=muc[i];p && !ok && ok2;p=p->urm){
if(df[i] == df[p->y] + p->c)ok2 = 0;
if(df[i] > df[p->y] + p->c) ok = 1;
}
}
}
if(ok)out<<"NU\n";
else out<<"DA\n";
}
}
int main(){
solve();
return 0;
}