Cod sursa(job #2888765)

Utilizator hobbitczxdumnezEU hobbitczx Data 11 aprilie 2022 20:23:23
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 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;

queue<int>q;
vector<pair<int , int>>g[N_MAX];
int n , m , p , r , d[N_MAX];
bool used[N_MAX];

int main(){
    ios_base::sync_with_stdio(false);
    fin >> n >> m >> p >> r;
    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));
    }
    for (int i=1; i<=n; i++){
        sort(g[i].begin() , g[i].end());
    }
    memset(d , INF , sizeof(d));
    d[p] = 0;
    q.push(p);
    used[p] = true;
    while (q.empty() == false){
        int node = q.front();
        q.pop();
        for (auto i : g[node]){
            int new_node = i.first , cost = i.second;
            if (used[new_node] == false){
                used[new_node] = true;
                q.push(new_node);
                d[new_node] = d[node] + cost;
            }
        }
    }
    fout << d[r];
}