Pagini recente » Cod sursa (job #2900856) | Cod sursa (job #3223016) | Cod sursa (job #505700) | Cod sursa (job #1848853) | Cod sursa (job #1048853)
#include <stdio.h>
#define N 30000
#define M 100024
FILE *in,*out;
typedef struct{
int nr,next,val;
}lista;
lista v[2*M+1];
int ult[N+1],rez[N+1],q[N+1];
void bfs(int in1, int in2){
int sus=0,jos=0,i,prim,x,y,c;
rez[in1]=0;
q[sus]=in1;
sus++;
while(jos<sus&&rez[in2]==-1){
x = q[jos];
i=ult[q[jos]];
while(i>0){
y = v[i].nr;
c = v[i].val;
if(rez[y]==-1){
q[sus]=y;
sus++;
rez[y] = rez[x] + c;
}
i=v[i].next;
}
jos++;
}
return ;
}
int main(){
in=fopen("sate.in","r");
out=fopen("sate.out","w");
int n,m,x,y,i,a,b,c,k;
fscanf(in,"%d%d%d%d",&n,&m,&x,&y);
k=0;
for(i=1;i<=m;i++){
fscanf(in,"%d%d%d",&a,&b,&c);
k++;
v[k].val=c;
v[k].nr=b;
v[k].next=ult[a];
ult[a]=k;
k++;
v[k].val=-c;
v[k].nr=a;
v[k].next=ult[b];
ult[b]=k;
}
for(i=1;i<=n;i++) rez[i]=-1;
int nr;
bfs(x,y);
fprintf(out,"%d",rez[y]);
return 0;
}