Cod sursa(job #3187116)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 27 decembrie 2023 16:33:00
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 30005
#define FILENAMEIN "sate.in"
#define FILENAMEOUT "sate.out"

vector<pair<int,int>> graf[NMAX];
int drumuri[NMAX];
queue<int> codita;

void initDinamics(int n){
    for(int i = 1;i<=n;++i){
        drumuri[i] = -1;
    }
}

void findPath(int start){
    codita.push(start);
    drumuri[start] = 0;
    while(codita.empty() == false){
        int tatic = codita.front();
        for(auto &fiut : graf[tatic]){
            int cost = fiut.second;
            if(drumuri[fiut.first] == -1){
                drumuri[fiut.first] = drumuri[tatic] + cost;
                codita.push(fiut.first);
            }
        }
        codita.pop();
    }
}

int main(void){
    ofstream cout(FILENAMEOUT);
    ifstream cin(FILENAMEIN);
    int Q, n, start, stop;
    cin >> Q >> n >> start >> stop;
    for(int i = 1;i<=n;i++){
        int x, y, z;
        cin >> x >> y >> z;
        graf[x].push_back({y,z});
        graf[y].push_back({x,-z});
    }
    initDinamics(Q);
    findPath(start);
    cout << drumuri[stop];

}