Pagini recente » Cod sursa (job #2113024) | Cod sursa (job #2642860) | Cod sursa (job #2131024) | Cod sursa (job #2645936) | Cod sursa (job #373918)
Cod sursa(job #373918)
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> v[30001];
vector<int> di[30001];
int n,m,x,y,p[30001],viz[30001],in,sf,nrr,d[30001];
int main ()
{
int i,a,b,c;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
v[a].push_back(b);
v[b].push_back(a);
di[a].push_back(c);
di[b].push_back(-c);
}
p[1]=x;
in=1;sf=1;
viz[x]=1;
while(sf>=in)
{
nrr=v[p[in]].size();
for(i=0;i<nrr;i++)
{
c=v[p[in]][i];
if(viz[c]==0)
{
p[++sf]=c;
viz[p[sf]]=1;
d[p[sf]]=d[p[in]]+di[p[in]][i];
if(p[sf]==y)
{
printf("%d\n",d[y]);
return 0;
} //if p
} //if viz
}//for
in++;
} //while
printf("%d\n",d[y]);
return 0;
}