Cod sursa(job #3374710)

Utilizator maria_5Diaconescu Maria maria_5 Data 9 noiembrie 2026 09:32:03
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

struct Muchie {
    int vecin;
    int pas;
};

const int NMAX =30005;

int n,m,start_nod, dest_nod;
vector<Muchie> graf[NMAX];
int dist[NMAX];
bool vizitat[NMAX];

void bfs(int start, int stop) {
    queue<int> coada;
    vizitat[start]=true;
    dist[start]=0;
    coada.push(start);

    while(!coada.empty()) {
        int nod = coada.front();
        coada.pop();

        if (nod==stop) {
            return;
        }

        for (int i = 0; i < graf[nod].size(); i++) {
            int vecin = graf[nod][i].vecin;
            int pas = graf[nod][i].pas;

            if (!vizitat[vecin]) {
                vizitat[vecin]=true;
                dist[vecin]=dist[nod]+pas;
                coada.push(vecin);
            }
        }
    }
}

int main() {
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);

    if (!(cin >> n >> m >> start_nod >> dest_nod)) {
        return 0;
    }

    for (int k = 0; k < m; k++) {
        int i,j,d;
        cin >> i >> j >> d;

        Muchie spre_dreapta;
        spre_dreapta.vecin=j;
        spre_dreapta.pas=d;
        graf[i].push_back(spre_dreapta);

        Muchie spre_stanga;
        spre_stanga.vecin = i;
        spre_stanga.pas = -d;
        graf[j].push_back(spre_stanga);
    }

    bfs( start_nod, dest_nod);

    cout<< abs(dist[dest_nod])<<endl;
    return 0;
}