Pagini recente » Cod sursa (job #280097) | Cod sursa (job #2302761) | Cod sursa (job #1934073) | Cod sursa (job #2222508) | Cod sursa (job #1032837)
#include <cstdio>
#include <vector>
#define NMAX 30010
using namespace std;
FILE *fin,*fout;
vector <int> M[NMAX];//costuri
vector <int> N[NMAX];//noduri
int n,m,x,y,use[NMAX],C[100100];
void BFS(int);
int main()
{
int i,a,b,c;
fin=fopen("sate.in","r");
fout=fopen("sate.out","w");
fscanf(fin,"%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d%d",&a,&b,&c);
M[a].push_back(c);
N[a].push_back(b);
M[b].push_back(-c);
N[b].push_back(a);
}
BFS(x);
fprintf(fout,"%d\n",use[y]-1);
return 0;
}
void BFS(int start)
{
int ic=0,sc=0,i,val,det;
C[ic]=start;
use[start]=1;
while(ic<=sc)
{
val=C[ic];
ic++;
det=M[val].size();
for(i=0;i<det;i++)
{
sc++;
C[sc]=N[val][i];
use[N[val][i]]=use[val]+M[val][i];
if(N[val][i]==y)
{
ic=sc+1;
break;
}
}
}
}