Cod sursa(job #3372830)

Utilizator ungureanubogdanUngureanu Bogdan ungureanubogdan Data 5 noiembrie 2026 08:57:07
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <queue>
#include <vector>

std::ifstream cin("sate.in");
std::ofstream cout("sate.out");

int n, m;
struct nod {
    int dest, cost;
    bool operator < (const nod & other) const {
        return this->cost < other.cost;
    }
};
std::vector<nod> G[30001];
int start, finish;
int d[30001];

void dijkstra() {
    for(int i = 1; i <= n; ++i) {
        d[i] = 2e9;
    }
    d[start] = 0;
    std::priority_queue<nod> pq;
    pq.push({start, 0});

    while(!pq.empty()) {
        auto node = pq.top();
        pq.pop();
        if(node.cost > d[node.dest]) continue;

        for(auto nodnou : G[node.dest]) {
            if(d[node.dest] + nodnou.cost < d[nodnou.dest]) {
                d[nodnou.dest] = d[node.dest] + nodnou.cost;
                pq.push({nodnou.dest, d[nodnou.dest]});
            }
        }
    }

}


int main() {
    cin >> n >> m >> start >> finish;
    for(int i = 0; i < m; ++i) {
        int src, dest, cost;
        cin >> src >> dest >> cost;
        G[src].push_back({dest, cost});
        G[dest].push_back({src, -cost});
    }

    dijkstra();

    cout << d[finish] << '\n';

    return 0;
}