Pagini recente » Cod sursa (job #2699513) | Cod sursa (job #682254) | Cod sursa (job #1430493) | Cod sursa (job #1529834) | Cod sursa (job #1032853)
#include <fstream>
#include <vector>
#include <cstdio>
using namespace std;
FILE *in,*o;
int n,m,x,y;
vector<int>M[30010];
vector<int>N[30010];
int C[200000];
int use[30010];
int c;
void cit()
{
int i,x1,y1,d;
in=fopen("sate.in","r");
fscanf(in,"%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=n;i++)
{
fscanf(in,"%d%d%d",&x1,&y1,&d);
M[x1].push_back(d);
N[x1].push_back(y1);
M[y1].push_back(-d);
N[y1].push_back(x1);
}
fclose(in);
}
int bfs(int vf)
{
int ic,sf,gasit,e,i,lg;
gasit=ic=sf=0;
C[ic]=x;
use[x]=1;
while(ic<=sf&&!gasit)
{
e=C[ic];
ic++;
lg=N[e].size();
for(i=0;i<lg&&!gasit;i++)
{
if(!use[N[e][i]])
{
sf++;
C[sf]=N[e][i];
use[N[e][i]]=use[e]+M[e][i];
if(N[e][i]==y)
return gasit=1;
}
}
}
//return gasit;
}
int main()
{
cit();
use[x]=0;
bfs(x);
o=fopen("sate.out","w");
fprintf(o,"%d\n",use[y]-1) ;
return 0;
}