Pagini recente » Cod sursa (job #3178651) | Cod sursa (job #2567660) | Cod sursa (job #2448922) | Cod sursa (job #2914612) | Cod sursa (job #499171)
Cod sursa(job #499171)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
queue<int> Q;
vector<pair<int,int> > V[1<<15];
int n,m,x,y,a,b,c,cost[1<<15];
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&x,&y);
for(;m;m--)
scanf("%d%d%d",&a,&b,&c),V[a].push_back(make_pair(b,c)),V[b].push_back(make_pair(a,-c));
}
void solve()
{
vector<pair<int,int> >::iterator it;
int q;
Q.push(x);cost[x]=1;
while(Q.size())
{
q = Q.front();
for(it=V[q].begin();it!=V[q].end();it++)
{
if(!cost[it->first])
{
cost[it->first]=cost[q]+it->second;
if(it->first == y) { printf("%d\n",cost[y]-1); return; }
Q.push(it->first);
}
}
Q.pop();
}
}