Pagini recente » Cod sursa (job #1797396) | Cod sursa (job #2222858) | Cod sursa (job #2869620) | Cod sursa (job #24877) | Cod sursa (job #3146566)
#include<iostream>
#include<vector>
#include<queue>
#include <cstring>
using namespace std;
const int NMAX=3e4;
struct segment{
int nod,cost;
};
vector<segment> g[NMAX+1];
int d[NMAX+1];
bool viz[NMAX+1];
int main(){
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
int n,m,x,y;
cin>>n>>m>>x>>y;
while(m--){
int a,b,c;
cin>>a>>b>>c;
g[a].push_back({b,c});
g[b].push_back({a,c});
}
queue<int> q;
q.push(x);
viz[x]=1;
for(;!q.empty();q.pop()){
int x=q.front();
for(auto i:g[x]){
if(!viz[i.nod]){
viz[i.nod]=1;
q.push(i.nod);
if(x<i.nod){
d[i.nod]=d[x]+i.cost;
}else{
d[i.nod]=d[x]-i.cost;
}
}
}
}
cout<<d[y];
}