Pagini recente » Cod sursa (job #2071068) | Cod sursa (job #2751263) | Cod sursa (job #234311) | Cod sursa (job #974808) | Cod sursa (job #1650146)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int Nmax=1e5;
#define pb push_back
int L[Nmax],n,m,x,y,c1,a,b;
vector< pair < int,int > > G[30000];
deque<int> q;
void bfs(){
int node;
while(!q.empty()){
node=q.front();
q.pop_front();
for(int i=0;i<G[node].size();i++){
if(L[G[node][i].first] > L[node]+ G[node][i].second ){
if(G[node][i].first > node)
L[G[node][i].first] = L[node] + G[node][i].second;
else
L[G[node][i].first] = L[node] - G[node][i].second;
q.pb(G[node][i].first);
}
}
}
}
int main(){
in>>n>>m>>x>>y;
for(int i=1;i<=n;i++){
L[i]=Nmax;
}
L[x]=0;
for(int i=1;i<=m;i++){
in>>a>>b>>c1;
G[a].pb({b,c1});
G[b].pb({a,c1});
}
q.pb(x);
bfs();
if(L[y]==Nmax)
L[y]=-1;
out<<L[y];
return 0;
}