Pagini recente » Cod sursa (job #555995) | Cod sursa (job #2934713) | Cod sursa (job #2545456) | Cod sursa (job #264027) | Cod sursa (job #494674)
Cod sursa(job #494674)
#include<stdio.h>
#include<vector>
#define MAX 30001
using namespace std;
int n,m,x,y,viz[MAX];
struct nod
{
int vec,cost;
};
vector<nod> a[MAX];
int bfs()
{
int prim=1,ultim=2,coada[2][4*MAX],i,ind;
coada[0][prim] = x;
while(prim != ultim)
{
ind = coada[0][prim];
viz[ind] = 1;
for(i=0;i<a[ind].size();++i)
{
if(!viz[a[ind][i].vec])
{
coada[0][ultim] = a[ind][i].vec;
coada[1][ultim] = coada[1][prim] + a[ind][i].cost;
if(coada[0][ultim] == y)
return coada[1][ultim];
++ultim;
}
}
++prim;
}
return 0;
}
int main()
{
FILE*f = fopen("sate.in","r");
fscanf(f,"%d %d %d %d",&n,&m,&x,&y);
int i,j,d,k;
nod aux;
for(k=1;k<=n;++k)
{
fscanf(f,"%d%d%d",&i,&j,&d);
aux.vec = j;
aux.cost = d;
a[i].push_back(aux);
aux.vec = i;
aux.cost = -d;
a[j].push_back(aux);
}
fclose(f);
if(x>y)
{
i = x;x = y;y = i;
}
FILE*g = fopen("sate.out","w");
fprintf(g,"%d\n",bfs());
fclose(g);
return 0;
}