Cod sursa(job #3374196)

Utilizator xeneyzeAl Daraghmeh Omar-Sorin xeneyze Data 8 noiembrie 2026 20:20:50
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
// bfs din x, daca mergem catre un sat cu nr mai mare adunam, daca nu, scadem, suma finala e distanta
int main() {
    ifstream fin("sate.in");
    ofstream fout("sate.out");

    int n, m, x, y;
    fin>>n>>m>>x>>y;
    if ( x>y) swap(x, y);

    vector<vector<pair<int,int>>> g(n+1);
    for ( int i=0; i<m; i++) {
        int a, b, d;
        fin>>a>>b>>d;
        g[a].push_back({b, d});
        g[b].push_back({a, d});
    }

    vector<long long> dist(n+1, 0);
    vector<bool> viz(n+1, false);
    queue<int> q;
    q.push(x);
    viz[x]=true;

    while ( !q.empty()) {
        int nod=q.front(); q.pop();
        if ( nod== y) break;
        for ( auto [vec, d] : g[nod]) {
            if ( viz[vec]) continue;
            viz[vec]=true;
            if ( vec>nod) dist[vec]=dist[nod]+d;   // mergem inainte
            else        dist[vec]=dist[nod]-d;   // mergem inapoi
            q.push(vec);
        }
    }

    fout<<dist[y]<<"\n";
    return 0;
}