Cod sursa(job #272991)

Utilizator razyelxrazyelx razyelx Data 8 martie 2009 00:41:14
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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;
}