Cod sursa(job #3142787)

Utilizator PostoacaMateiMatei Postoaca PostoacaMatei Data 24 iulie 2023 14:47:44
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

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

vector<pair<int, int>> gf[100001];
int n, m, x, y, viz[100001], dist[100001];

int BFS() {
    queue<int> q;
    viz[x] = 1;
    dist[x] = 0;
    q.push(x);
    while (!q.empty()) {
        int nod = q.front();
        q.pop();
        for (auto vecin : gf[nod]) {
            int nodnou = vecin.first;
            int costnou = vecin.second;
            if (!viz[nodnou]) {
                viz[nodnou] = 1;
                dist[nodnou] = dist[nod] + costnou;
                q.push(nodnou);
                if (nodnou == y)
                    return dist[nodnou];
            }
        }
    }
}

int main()
{
    fin >> n >> m >> x >> y;
    if (x > y)
        swap(x, y);
    for (int i = 1; i <= m; i++) {
        int x1, x2, x3;
        fin >> x1 >> x2 >> x3;
        gf[x1].push_back({ x2, x3 });
        gf[x2].push_back({ x1, -x3 });
    }
    fout << BFS();
    return 0;
}