Pagini recente » Cod sursa (job #1289629) | Cod sursa (job #2205169) | Monitorul de evaluare | Cod sursa (job #1332305) | Cod sursa (job #2500760)
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
int n,m,x,y,a,b,c, dist_x[30010];
bool viz[30010];
queue< int > q;
vector < pair < int, int > > v[30010];
int main(){
ifstream cin("sate.in");
ofstream cout("sate.out");
cin>>n>>m>>x>>y;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
v[a].push_back({b, c});
v[b].push_back({a, c});
}
q.push(x);
viz[x] = 1;
dist_x[x] = 0;
while(!q.empty()){
int curr = q.front();
q.pop();
for(int i = 0; i < v[curr].size();i++){
if(!viz[v[curr][i].fi]){
if(v[curr][i].fi > curr)
dist_x[v[curr][i].fi] = dist_x[curr] + v[curr][i].se;
else
dist_x[v[curr][i].fi] = dist_x[curr] - v[curr][i].se;
if(v[curr][i].fi == y) {
cout<<dist_x[y];
return 0;
}
viz[v[curr][i].fi] = 1;
q.push(v[curr][i].fi);
}
}
}
cout<<-1;
return 0;
}