Pagini recente » Cod sursa (job #1215446) | Cod sursa (job #1601705) | Cod sursa (job #267053) | Cod sursa (job #2685875) | Cod sursa (job #628831)
Cod sursa(job #628831)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
#define NMAX 30005
#define pb push_back
#define mp make_pair
#define PII pair< int, int >
#define nod first
#define cost second
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
int N, M, i, x, y, c, S, D, Dist[NMAX];
vector< PII > G[NMAX];
queue< int > Q;
bool USED[NMAX];
inline void BFS()
{
Q.push( S );
while( true )
{
int Nod = Q.front();
Q.pop();
for( vector< PII >::iterator it = G[Nod].begin(); it != G[Nod].end(); ++it )
if( !USED[ (*it).nod ] )
{
USED[ (*it).nod ] = true;
Dist[ (*it).nod ] = Dist[ Nod ] + (*it).cost;
if( (*it).nod == D ) return;
Q.push( (*it).nod );
}
}
}
int main()
{
in >> N >> M >> S >> D;
for( i = 0; i < M; ++i )
{
in >> x >> y >> c;
if( x > y ) swap( x, y );
G[x].pb( mp( y, c ) );
G[y].pb( mp( x, -c ) );
}
memset( USED, false, sizeof(USED) );
memset( Dist, 0, sizeof(Dist) );
BFS();
out << Dist[ D ] << '\n';
return 0;
}