Pagini recente » Cod sursa (job #2909777) | Cod sursa (job #2372367) | Cod sursa (job #2556710) | Cod sursa (job #2198378) | Cod sursa (job #2546460)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
struct abc{
int nod, cost;
bool operator <(const abc&a)const{
return cost>a.cost;
}
};
int n, m, a, b, c, x, y, op, os, dist[100000];
vector <abc> v[100000];
priority_queue <abc> q;
int main()
{
in>>n>>m>>op>>os;
for(int i=1;i<=n;i++)dist[i]=1<<30;
for(int i=1;i<=m;i++){
in>>a>>b>>c;
v[a].push_back({b, c});
v[b].push_back({a, -c});
}
dist[op]=0;
q.push({op, 0});
while(!q.empty()){
x=q.top().nod;
y=q.top().cost;
q.pop();
//if(y!=dist[x])continue;
for(auto i:v[x]){
if(dist[i.nod]>dist[x]+i.cost){
dist[i.nod]=dist[x]+i.cost;
q.push({i.nod, dist[i.nod]});
}
}
}
out<<dist[os];
}