Pagini recente » Cod sursa (job #2604074) | Cod sursa (job #2134504) | Cod sursa (job #2428342) | Cod sursa (job #2794612) | Cod sursa (job #583637)
Cod sursa(job #583637)
#include <cstdio>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define N 1<<15
#define pb push_back
#define mp make_pair
#define f first
#define s second
int cs[N];
vector< pair < int , int > > v[N];
int main ()
{
ifstream in ("sate.in");
freopen ("sate.out","w",stdout);
int n,m,x,y;
in>>n>>m>>x>>y;
if(x==y)
printf("0\n");
else{
for(int i,j,c;m;--m){
in>>i>>j>>c;
v[i].pb(mp(j,c));
v[j].pb(mp(i,-c));
}
cs[x]=1;
queue<int> q;
for(q.push(x);q.size();q.pop()){
for(vector<pair<int,int> >::iterator i=v[q.front()].begin();i<v[q.front()].end();++i)
if(!cs[(*i).f]){
cs[(*i).f]=cs[q.front()]+(*i).s;
if((*i).f==y){
printf("%d\n",cs[y]-1);
return 0;
}
q.push((*i).f);
}
}
}
return 0;}