Pagini recente » Cod sursa (job #3272846) | Cod sursa (job #3272380) | Cod sursa (job #2943544) | Cod sursa (job #2428321) | Cod sursa (job #1117430)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin( "sate.in" );
ofstream cout( "sate.out" );
int n, m, sta, end, viz[ 30001 ];
int c[ 1000001 ], prim, ultim;
vector< pair< int,int > > g[ 30001 ];
int main()
{
cin >> n >> m >> sta >> end;
for ( int i = 1; i <= m; i++ )
{
int x, y, d;
cin >> x >> y >> d;
g[ x ].push_back( make_pair( y,d ) );
g[ y ].push_back( make_pair( x,d ) );
}
c[ 0 ] = sta;
while ( prim <= ultim && !viz[ end ] )
{
int nod = c[ prim++ ];
for ( int i = 0; i < g[ nod ].size(); i++ )
if ( !viz[ g[ nod ][ i ].first ] )
{
if ( g[ nod ][ i ].first > nod )
viz[ g[ nod ][ i ].first ] = viz[ nod ] + g[ nod ][ i ].second;
else viz[ g[ nod ][ i ].first ] = viz[ nod ] - g[ nod ][ i ].second;
c[ ++ultim ] = g[ nod ][ i ].first;
}
}
cout << viz[ end ];
}