Pagini recente » Cod sursa (job #1141546) | Cod sursa (job #1629784) | Cod sursa (job #1211420) | Cod sursa (job #17784) | Cod sursa (job #784263)
Cod sursa(job #784263)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define pp pair<int,int>
#define ff first
#define ss second
vector <pp> v[30001];
queue <int> Q;
int n,m,x,y;
int cost[30001];
void BFS(){
int curr;
unsigned i;
cost[x]=1;
if(x==y)
return;
Q.push(x);
while(!Q.empty()){
curr=Q.front();
for(i=0;i<v[curr].size();i++){
if(cost[v[curr][i].ff]==0){
Q.push(v[curr][i].ff);
cost[v[curr][i].ff]=cost[curr]+v[curr][i].ss;
if(v[curr][i].ff==y)
return;
}
}
Q.pop();
}
}
int main(){
int i,xx,yy,c;
freopen("sate.in","r",stdin);
scanf("%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++){
scanf("%d%d%d",&xx,&yy,&c);
v[xx].push_back(make_pair(yy,c));
v[yy].push_back(make_pair(xx,-c));
}
fclose(stdin);
BFS();
freopen("sate.out","w",stdout);
printf("%d\n",cost[y]-1);
fclose(stdout);
return 0;
}