Pagini recente » Cod sursa (job #2863964) | Cod sursa (job #1609289) | Cod sursa (job #1882348) | Cod sursa (job #2283775) | Cod sursa (job #2638824)
#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;
}