Pagini recente » Cod sursa (job #509454) | Cod sursa (job #2683188) | Cod sursa (job #2374778) | Cod sursa (job #2814692) | Cod sursa (job #2910785)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin( "sate.in" );
ofstream fout( "sate.out" );
const int MAX_N = 30000;
vector <int> g[MAX_N + 1];
int dist[MAX_N + 1], drum[MAX_N + 1][MAX_N + 1];
queue <int> q;
int main() {
int n, m, x, y, i;
fin >> n >> m >> x >> y;
for ( i = 0; i < m; i++ ) {
int a, b, l;
fin >> a >> b >> l;
g[a].push_back(b);
g[b].push_back(a);
drum[a][b] = drum[b][a] = l;
}
q.push(x);
dist[x] = 1;
while ( q.size () > 0 ){
int s = q.front();
q.pop ();
for ( i = 0; i < g[s].size (); i++ ){
if ( dist[g[s][i]] == 0 ){
if ( g[s][i] > s )
dist[g[s][i]] = dist[s] + drum[s][g[s][i]];
else
dist[g[s][i]] = dist[s] - drum[s][g[s][i]];
q.push ( g[s][i] );
}
}
}
fout << dist[y] - 1 << ' ';
return 0;
}