Cod sursa(job #2638824)

Utilizator Snake2003lalallalal Snake2003 Data 30 iulie 2020 08:12:24
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

#define Nmax 30005

using namespace std;

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

int vf, muchii, start, finish;

vector < vector < int > > Numere[Nmax];

queue < int > Coada;

int Distanta[Nmax];

void BFS()
{
    int Nod, Vecin;
    Distanta[start] = 1;
    if(start == finish)
        return;
    while( !Coada.empty() )
    {
        Nod = Coada.front();
        Coada.pop();
        for(unsigned int i = 0; i < Numere[Nod].size(); i ++)
        {
            Vecin = Numere[Nod][i].front();
            if(Distanta[Vecin] == 0)
            {
                Distanta[Vecin] = Distanta[Nod] + Numere[Nod][i].back();
                Coada.push(Vecin);
            }
        }
    }
}


void Read()
{

    fin >> vf >> muchii >> start >> finish;
    for(int i = 1; i <= muchii; i ++)
    {
        int x, y, valoare;
        fin >> x >> y >> valoare;
        Numere[x].push_back({y,valoare});
        Numere[y].push_back({x,-valoare});
    }

    //for(int i = 1; i <= vf; i ++)
    //Distanta[i] = 0;
    Coada.push(start);

    BFS();
    fout << Distanta[finish] - 1;

}

int main()
{
    Read();
    return 0;
}