Cod sursa(job #3371977)

Utilizator yolanqaStefanescu Yolanda - Gabriela yolanqa Data 1 noiembrie 2026 23:16:19
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

std::vector<std::vector<std::pair<int,int>>> graf;
std::vector<int> vizitat;
std::vector<int> dist;

void bfs(int start, int destinatie){
    std::queue<int> q;
    q.push(start);
    vizitat[start]=1;
    dist[start]=0;
    
    while(!q.empty()){
        int nod = q.front();
        q.pop();

        if(nod == destinatie)
            return;
        for(auto &p : graf[nod]){
            int vecin = p.first;
            int cost = p.second;
            
            if(!vizitat[vecin]){
                vizitat[vecin] = 1;
                dist[vecin] = dist[nod] + cost;
                q.push(vecin);
    
            }
        }}}

int main(){
    
    int n, m, x, y;
    
    std::ifstream fin("sate.in");
    std::ofstream fout("sate.out");
    
    if(!(fin>>n>>m>>x>>y))
        return 0;
        
    graf.resize(n+1);
    vizitat.resize(n+1, 0);
    dist.resize(n+1, 0);
        
    for(int i = 0;i<m;i++){
        int x, y, d;
        fin >> x >> y>>d;
        graf[x].push_back({y,d});
        graf[y].push_back({x, -d});
    }
    
    bfs(x,y);
    
    long long rez = dist[y];
    if(rez < 0) 
        rez = -rez;

    fout << rez << "\n";
    return 0;
    
    
}