Pagini recente » Cod sursa (job #2479376) | Cod sursa (job #1814147) | Cod sursa (job #2094743) | Cod sursa (job #3253060) | Cod sursa (job #2888764)
#include <bits/stdc++.h>
#define ll long long
#define INF 0x3F3F3F3F
using namespace std;
const string fisier = "sate";
ifstream fin (fisier + ".in");
ofstream fout (fisier + ".out");
const int N_MAX = 5e4 + 5;
set<pair<int , int>>s;
vector<pair<int , int>>g[N_MAX];
int n , m , p , q , d[N_MAX];
int main(){
ios_base::sync_with_stdio(false);
fin >> n >> m >> p >> q;
for (int i=1; i<=m; i++){
int x , y , cost; fin >> x >> y >> cost;
g[x].push_back(make_pair(y , cost));
g[y].push_back(make_pair(x , -cost));
}
s.insert(make_pair(0 , p));
memset(d , INF , sizeof(d));
d[p] = 0;
while (s.empty() == false){
int node = s.begin() -> second;
s.erase(s.begin());
for (auto i : g[node]){
int new_node = i.first , cost = i.second;
if (d[new_node] > d[node] + cost && d[node] + cost < d[q]){
d[new_node] = d[node] + cost;
s.insert(make_pair(d[new_node] , new_node));
}
}
}
fout << d[q];
}