Cod sursa(job #3372899)

Utilizator ilinca_onofreiIlinca-Ioana Onofrei ilinca_onofrei Data 5 noiembrie 2026 13:03:15
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");

const int MAXN = 30005;

vector<pair<int,int>> adiacenta[MAXN];

int main() {
    int n, m , x, y;
    fin>>n>>m>>x>>y;
    for ( int k=0; k<m; k++) {
        int i, j, d;
        fin>>i>>j>>d;
        adiacenta[i].push_back({j,d});
        adiacenta[j].push_back({i,-d});
    }

    vector<int> distanta(n+1, 0);
    vector<bool> vizitat(n+1,false);
    queue<int> q;

    q.push(x);
    vizitat[x] = true;
    distanta[x] = 0;

    while (!q.empty()) {
        int curent = q.front();
        q.pop();
        if (curent == y) {
            break;
        }
        for (auto muchie: adiacenta[curent]) {
            int vecin = muchie.first;
            int cost = muchie.second;
            if (vizitat[vecin] == false) {
                vizitat[vecin] = true;
                distanta[vecin] = distanta[curent] + cost;
                q.push(vecin);
            }
        }
    }
    fout<<distanta[y]<<"\n";

    fin.close();
    fout.close();
    return 0;
}