Pagini recente » Cod sursa (job #2176705) | Cod sursa (job #2820165) | Cod sursa (job #2160936) | Cod sursa (job #1818727) | Cod sursa (job #2367087)
#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;
}