Pagini recente » Cod sursa (job #1695057) | Cod sursa (job #1640528) | Profil ConstantinPetrovici | Cod sursa (job #590925) | Cod sursa (job #68091)
Cod sursa(job #68091)
using namespace std;
#define MAX_N 30005
#define MAX_V 300
#include <stdio.h>
#include <fstream>
FILE *fin=fopen("sate.in","r"),
*fout=fopen("sate.out","w");
typedef struct
{
int v;
int c;
} lista;
lista p[MAX_N][MAX_V];
int el[MAX_N];
int v[MAX_N];
int d[MAX_N];
int coada[MAX_N<<1];
int n,m,x,y;
void buildgraf (void)
{
int i,x0,y0,d;
memset(el,0,sizeof(el));
fscanf(fin,"%d %d %d %d",&n,&m,&x,&y);
for (i=1; i<=m; i++) {
fscanf(fin,"%d %d %d",&x0,&y0,&d);
el[x0]++; el[y0]++;
p[x0][el[x0]].v=y0; p[x0][el[x0]].c=d;
p[y0][el[y0]].v=x0; p[y0][el[y0]].c=-d;
} }
void bf ()
{
int i,li=1,lf=1,vf;
memset(v,0,sizeof(v));
memset(d,0,sizeof(d));
v[x]=1; coada[lf++]=x;
while (li!=lf)
{
vf=coada[li++]; v[vf]=1;
for (i=1; i<=el[vf]; i++)
if (v[p[vf][i].v]==0)
{
coada[lf++]=p[vf][i].v;
v[p[vf][i].v]=1;
d[p[vf][i].v]=d[vf]+p[vf][i].c;
}
}
fprintf(fout,"%d\n",d[y]);
}
int main()
{
buildgraf();
bf();
fclose(fin);
fclose(fout);
return 0;
}