Pagini recente » Cod sursa (job #985918) | Cod sursa (job #1941643) | Cod sursa (job #2250448) | Cod sursa (job #2485438) | Cod sursa (job #2367080)
#include <fstream>
#include <vector>
#include <deque>
#include <cmath>
using namespace std;
ifstream fin( "sate.in" );
ofstream fout( "sate.out" );
const int NMAX = 30005;
int N, M;
int X, Y;
int a[NMAX], b[NMAX], d[NMAX];
int dist[NMAX];
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;
}