Cod sursa(job #3146302)

Utilizator not_anduAndu Scheusan not_andu Data 20 august 2023 11:54:22
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3")

using namespace std;

#define INFILE "sate.in"
#define OUTFILE "sate.out"

const int VMAX = 3e5 + 2;

struct Edge {
    int node;
    int price;
};

int n, m, vill1, vill2;
vector<Edge> adj[VMAX];
int dist[VMAX];
bool viz[VMAX];

void bfs(int source){

    queue<int> q;

    q.push(source);

    dist[source] = 0;

    while(!q.empty()){

        int node = q.front();

        q.pop();

        for(int i = 0; i < adj[node].size(); ++i){

            Edge to = adj[node][i];

            if(!viz[to.node]){

                viz[to.node] = true;

                dist[to.node] = dist[node] + to.price;

                q.push(to.node);

            }

        }

    }

}

void solve(){

    cin >> n >> m >> vill1 >> vill2;

    for(int i = 0; i < m; ++i){

        int node1, node2, price;
        Edge e1, e2;

        cin >> node1 >> node2 >> price;

        e1.node = node2;
        e1.price = price;

        e2.node = node1;
        e2.price = -price;

        adj[node1].push_back(e1);
        adj[node2].push_back(e2);

    }

    bfs(vill1);

    cout << dist[vill2] << '\n';

}

int main(){
    
    ios_base::sync_with_stdio(false);

    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);

    cin.tie(nullptr);
    cout.tie(nullptr);

    solve();

    return 0;
}