Cod sursa(job #3220120)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 2 aprilie 2024 15:24:36
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int Nmax = 30005;
const int Mmax = 100035;

struct muchie{
    int nod, cost;
};

struct nodes{
    vector<muchie> vecini;
};

int dist[Nmax];
int nr_noduri, nr_muchii, start, finish;
nodes noduri[Nmax];
queue<int> q;

void citire(){
    int oras1, oras2, distanta;

    fin >> nr_noduri >> nr_muchii;
    fin >> start >> finish;

    for(int i = 1; i <= nr_muchii; i++){
        fin >> oras1 >> oras2 >> distanta;

        noduri[oras1].vecini.push_back({oras2, distanta});
        noduri[oras2].vecini.push_back({oras1, -distanta});
    }
}

void bfs(){
    int nod;

    q.push(start);
    dist[start] = 0;

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

        for(muchie vecin : noduri[nod].vecini){
            if(dist[vecin.nod] == 0 && vecin.nod != start){
                dist[vecin.nod] = dist[nod] + vecin.cost;
                q.push(vecin.nod);
            }
        }
    }
}

void afisare(){
    fout << dist[finish];
}

int main(){
    citire();

    bfs();
    afisare();

    return 0;
}