Cod sursa(job #3164515)

Utilizator TonyyAntonie Danoiu Tonyy Data 3 noiembrie 2023 15:13:41
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define Max 100001
#define vecin first
#define cost second
using namespace std;

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

vector <pair<int,int>> graf[Max];
bitset <Max> v;
queue <int> q;
int n, m, x, y, d[Max];

void read()
{
    fin >> n >> m >> x >> y;
    if (x > y) 
        swap (x, y);
    int z1, z2, z3;
    for (int i = 1 ; i <= m ; ++i)
    {
        fin >> z1 >> z2 >> z3;
        graf[z1].push_back({z2, z3});
        graf[z2].push_back({z1,-z3});
    }
}

void bfs (int nod)
{
    q.push(nod);
    v[nod] = 1;
    d[nod] = 0;
    while (!q.empty())
    {
        nod = q.front();
        q.pop();
        for (auto i : graf[nod])
            if (!v[i.vecin])
            {
                v[i.vecin] = 1;
                d[i.vecin] = d[nod] + i.cost;
                q.push(i.vecin);
            }
    }
}

int main()
{
    read();
    bfs(x);
    fout << d[y];

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