Pagini recente » Cod sursa (job #2302524) | Cod sursa (job #312888) | Cod sursa (job #524535) | Cod sursa (job #2988659) | Cod sursa (job #2343053)
#include <bits/stdc++.h>
#define MAXN 30010
#define ll long long
#define pii pair<int,ll>
#define vii vector<pii>
#define F first
#define S second
using namespace std;
int n,m,x,y;
vii A[MAXN];
ll V[MAXN];
ifstream fin("sate.in");
ofstream fout("sate.out");
ll BFS(int x, int y){
queue <int> q;
q.push(x);
while(!q.empty()){
int f=q.front(),l=A[f].size();
if(f==y){
//while(!q.empty())q.pop();
//break;
return V[y];
}
for(int i=0;i<l;i++){
if(!V[A[f][i].F]){
int node=A[f][i].F;
q.push(node);
if(f<node)V[node]=V[f]+A[f][i].S;
else V[node]=V[f]-A[f][i].S;
}
}
q.pop();
}
/* q.push(x);
V[x]=0;
while(!q.empty()){
int f=q.front(),l=A[f].size();
if(f==y){
return V[y];
}
for(int i=0;i<l;i++){
if(V[A[f][i].F]==-1){
int node=A[f][i].F;
q.push(node);
if(f<node)V[node]=V[f]+A[f][i].S;
else V[node]=V[f]-A[f][i].S;
}
}
q.pop();
}*/
}
int main(){
fin>>n>>m>>x>>y;
for(int i=0;i<m;i++){
int a;
pii p;
fin>>a>>p.F>>p.S;
A[a].push_back(p);
swap(a,p.F);
if(a>p.F)p.S=-p.S;
A[a].push_back(p);
}
fout<<BFS(x,y);
return 0;
}