Pagini recente » Cod sursa (job #2750212) | Cod sursa (job #3003701) | Borderou de evaluare (job #2011837) | Cod sursa (job #150516) | Cod sursa (job #494685)
Cod sursa(job #494685)
#include<fstream.h>
#define URMAT v[0][ v[1][coada[0][prim]] ]
#define LOCURMAT v[1][ v[1][coada[0][prim]] ]
#define MAX 230049
int v[3][MAX],n,m,x,y,cont,coada[2][MAX],prim,ultim;
void add(int x,int y,int d)
{
if(!v[0][x])
{
v[1][x] = cont;
}
else
{
v[1][v[0][x]] = cont;
}
v[0][x] = cont;
v[0][cont] = y;
v[2][cont] = d;
}
int main()
{
ifstream f("sate.in");
f>>n>>m>>x>>y;
int i,j,d,k;
cont = n+1;
for(k=1;k<=m;++k,++cont)
{
f>>i>>j>>d;
add(i,j,d);
++cont;
add(j,i,d);
}
f.close();
prim = 1;
coada[0][prim] = x;
ultim = 2;
int var;
while(prim!=ultim)
{
while(v[1][coada[0][prim]])
{
if(v[1][ URMAT ])
{
var = URMAT;
coada[0][ultim] = var;
coada[1][ultim] = coada[1][prim];
if(var < coada[0][prim])
coada[1][ultim] -= v[2][ v[1][coada[0][prim]] ];
else coada[1][ultim] += v[2][ v[1][coada[0][prim]] ];
if(var == y)
{
ofstream g("sate.out","w");
g<<coada[1][ultim];
g.close();
return 0;
}
++ultim;
}
v[1][coada[0][prim]] = LOCURMAT;
}
++prim;
}
FILE*g = fopen("sate.out","w");
fprintf(g,"%d\n",min);
fclose(g);
return 0;
}