Cod sursa(job #2888764)

Utilizator hobbitczxdumnezEU hobbitczx Data 11 aprilie 2022 20:18:24
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#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];
}