Cod sursa(job #2367087)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 5 martie 2019 08:26:41
Problema Sate Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#include <deque>
#include <cmath>

using namespace std;

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

const int NMAX = 30005;
const int MMAX = 100050;

int N, M;
int X, Y;

int a[MMAX], b[MMAX], d[MMAX];
int dist[MMAX];

void Read()
{
  fin >> N >> M >> X >> Y;

  for( int i = 1; i <= M; ++i )
   fin >> a[i] >> b[i] >> d[i];

  fin.close();
}

void Do()
{
  dist[X] = 1;

  while( dist[Y] == 0 )
  {
    for( int i = 1; i <= M; ++i )
      if( dist[ a[i] ] > 0 && dist[ b[i] ] == 0 )
       dist[ b[i] ] = dist[ a[i] ] + d[i];
      else
        if( dist[ a[i] ] == 0 && dist[ b[i] ] > 0 )
         dist[ a[i] ] = dist[ b[i] ] - d[i];

  }

  fout << dist[Y] - 1 << '\n';
}

int main()
{
    Read();
    Do();

    return 0;
}