Cod sursa(job #3374032)

Utilizator TVladutTapu Vladut Iulian TVladut Data 8 noiembrie 2026 15:03:20
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");
/*
void parcurgere(vector<vector<pair<int,int>>> &graph,
                vector<long long> &poz, int sat, int pozsat)
{
    poz[sat]=pozsat;

    for(int nrdrum=0;nrdrum<graph[sat].size();nrdrum++)
        if(poz[graph[sat][nrdrum].first]==-1)
            parcurgere(graph,poz,graph[sat][nrdrum].first,
                       graph[sat][nrdrum].second+pozsat);
}
*/
int main ()
{

    int n, m, x, y;
    fin>>n>>m>>x>>y;
    vector<vector<pair<int,int>>> graph(n+1);
    vector<long long> poz(n+1,-1);
    int nod1,nod2,dist;
    while(m)
    {
        fin>>nod1>>nod2>>dist;
        graph[nod1].push_back({nod2,dist});
        graph[nod2].push_back({nod1,-dist});
        m--;

    }

    //parcurgere(graph,poz,1,0);

    queue<int> lsvizit;
    lsvizit.push(x);
    poz[1] = 0;

    while (!lsvizit.empty())
    {
        int sat = lsvizit.front();
        lsvizit.pop();

        for (int nrdrum = 0; nrdrum < graph[sat].size(); ++nrdrum)
        {
            if (poz[graph[sat][nrdrum].first] == -1)
            {
                poz[graph[sat][nrdrum].first] = poz[sat] + graph[sat][nrdrum].second;
                lsvizit.push(graph[sat][nrdrum].first);
            }
        }
    }

    fout<<-poz[x]+poz[y];

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