Pagini recente » Cod sursa (job #3149555) | Cod sursa (job #2723524) | Cod sursa (job #2289481) | Cod sursa (job #3224075) | Cod sursa (job #272991)
Cod sursa(job #272991)
#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);
//if(s==x) di[x] = c;
//if(s==y) di[x] = c;
}
for(i=1,ok=0,ok2=0;i<=n&&!ok&&!ok2;++i){
//ok2=1;
for(p=muc[i];p&&!ok;p=p->urm){
if(df[i] + p->c < df[p->y]) ok=1;
//if(df[i] + p->c == df[p->y])ok2=0;
}
}
if(ok)out<<"NU\n";
else out<<"DA\n";
}
}
int main(){
solve();
return 0;
}