Pagini recente » Cod sursa (job #3196252) | Cod sursa (job #41548) | Cod sursa (job #266790) | Cod sursa (job #2308979) | Cod sursa (job #797238)
Cod sursa(job #797238)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define INF 0x3f3f3f3f
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, A, B;
vector<pair<int, int> > g[30001];
queue<int> q;
int d[30001];
void Read();
void BFS( int nod );
int main()
{
Read();
BFS( A );
fout << d[B];
fin.close();
fout.close();
return 0;
}
void Read()
{
int x, y, c;
fin >> n >> m >> A >> B;
for( int i = 1; i <= n; ++i )
d[i] = INF;
d[A] = 0;
for( int i = 1; i <= m; ++i )
{
fin >> x >> y >> c;
g[x].push_back(make_pair( y, c ) );
g[y].push_back(make_pair( x, -c) );
}
}
void BFS( int nod )
{
int x;
q.push( nod );
while( !q.empty() )
{
x = q.front();
q.pop();
for( size_t i = 0; i < g[x].size(); ++i )
if( d[x]+g[x][i].second < d[g[x][i].first] )
{
d[g[x][i].first]=d[x]+g[x][i].second;
q.push( g[x][i].first );
if ( g[x][i].first == B )
return;
}
}
}