Pagini recente » Cod sursa (job #1309161) | Cod sursa (job #2542680) | Cod sursa (job #1830727) | Cod sursa (job #2177057) | Cod sursa (job #2857793)
#include <stdio.h>
#include <vector>
#include <queue>
#define NMAXX 30000
using namespace std;
struct costuri {
int edge, cost;
};
vector <costuri> graf[NMAXX + 1];
queue <int> bfsQueue;
int dist[NMAXX + 1];
void bfs( int node ) {
int qf;
bfsQueue.push( node );
dist[node] = 1;
while ( !bfsQueue.empty() ) {
qf = bfsQueue.front();
for ( costuri& val : graf[qf] ) {
if ( !dist[val.edge] ) {
bfsQueue.push( val.edge );
if ( qf < val.edge )
dist[val.edge] = dist[qf] + val.cost;
else
dist[val.edge] = dist[qf] - val.cost;
}
}
bfsQueue.pop();
}
}
int main()
{
FILE *fin, *fout;
int n, m, x, y, a, b, d, i;
fin = fopen( "sate.in", "r" );
fout = fopen( "sate.out", "w" );
fscanf( fin, "%d%d%d%d", &n, &m, &x, &y );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d%d", &a, &b, &d );
graf[a].push_back( {b, d} );
graf[b].push_back( {a, d} );
}
bfs( x );
fprintf( fout, "%d", dist[y] - 1 );
return 0;
}