Pagini recente » Cod sursa (job #1347695) | Cod sursa (job #3203515) | Cod sursa (job #423358) | Cod sursa (job #264803) | Cod sursa (job #801015)
Cod sursa(job #801015)
# include <vector>
# include <stdio.h>
# define mk make_pair
using namespace std;
vector < pair<int, int> > list[30005];
int n,m,i,j,q[70000],x,y,a,b,c,p,u,drum[30005];
bool viz[30005];
void bfs()
{
int nod;
while(p<=u)
{
nod=q[p];
for (unsigned int i=0;i<list[nod].size();i++)
{
int next_nod=list[nod][i].first;
int cost=list[nod][i].second;
if (viz[next_nod]==false)
{
u++;
q[u]=next_nod;
viz[next_nod]=true;
drum[next_nod]=drum[nod]+cost;
if (next_nod==y) {return;}
}
}
p++;
}
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d %d %d %d\n",&n,&m,&x,&y);
for (i=1; i<=m; i++)
{
scanf("%d %d %d\n",&a,&b,&c);
list[a].push_back(mk(b,c));
list[b].push_back(mk(a,-c));
}
drum[x]=0;
p=u=1;
viz[x]=true;
q[1]=x;
bfs();
printf("%d\n",drum[y]);
return 0;
}