Cod sursa(job #3372027)

Utilizator mitoceanuci@gmail.comMitoceanu Ciprian [email protected] Data 2 noiembrie 2026 11:54:52
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <vector>
#include <stdbool.h>
#include <queue>

const int N = 30005;
std::vector<std::pair<int, int>> graf[N];

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

int bfs(int src, int dst, int n, std::vector<std::pair<int, int>> graf[])
{
    std::vector<int> dist(n + 1, -1);
    std::vector<bool> vizitat(n+1, false);
    std::queue<int> coada;
    coada.push(src);
    vizitat[src] = true;
    dist[src] = 0;

    while(!coada.empty())
    {
        int nod = coada.front();
        coada.pop();
        if(nod == dst)
        {
            return dist[nod];
        }
        else
        {
            for(auto vecin : graf[nod])
            {
                if(vizitat[vecin.first] == false)
                {
                    dist[vecin.first] = dist[nod] + vecin.second;
                    vizitat[vecin.first] = true;
                    coada.push(vecin.first);
                }
            }
        }
    }

    return -1;
}

int main()
{
    int n, m, src, dst;
    fin >> n >> m >> src >> dst;

    for (int i{0}; i < m; i++)
    {
        int x, y, d;
        fin >> x >> y >> d;
        graf[x].push_back(std::make_pair(y, d));
        graf[y].push_back(std::make_pair(x, -d));
    }

    fout<<bfs(src, dst, n, graf);
    
    return 0;
}