Pagini recente » Cod sursa (job #2977145) | Cod sursa (job #2895750) | Cod sursa (job #2642589) | Cod sursa (job #686284) | Cod sursa (job #732011)
Cod sursa(job #732011)
#include<stdio.h>
int i , n , m , st , dr , a , b , d,Fr[30010],C[30010],p,u,D[30010];
FILE*f=fopen("sate.in","r");
FILE*g=fopen("sate.out","w");
struct nod{
int nr;
int dist;
nod *adr;
}*L[30010],*c;
void bfs(){
C[1]=st;
Fr[st]=1;Fr[0]=1;
p=1;u=1;
int ok=1;
while(p<=u&&ok){
c=L[C[p]];
while(c!=NULL){
if(Fr[(c->nr)*((c->nr)<=30009)]==0){
Fr[c->nr]=1;
C[++u]=c->nr;
if((c->nr)<C[p])
D[u]=D[p]-(c->dist);
else
D[u]=D[p]+(c->dist);
if((c->nr)==dr){
ok=0;break;
}
}
c=(c->adr);
}
p++;
}
delete c;
}
int main(){
fscanf(f,"%d %d %d %d",&n,&m,&st,&dr);
nod *p;
for(i=1;i<=m;i++){
fscanf(f,"%d%d%d",&a,&b,&d);
p=new nod;
p->nr=b;
p->dist=d;
p->adr=L[a];
L[a]=p;
p=new nod;
p->nr=a;
p->dist=d;
p->adr=L[b];
L[b]=p;
}
delete p;
bfs();
fprintf(g,"%d",D[u]);
return 0;
}