Pagini recente » Cod sursa (job #626990) | Cod sursa (job #1240953) | Cod sursa (job #404368) | Cod sursa (job #883752) | Cod sursa (job #2420387)
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
const int NMAX = 30005;
const int inf = 1e9;
struct variabila{
int lo, hi;
};
vector <variabila> v[NMAX];
deque <int> q;
int n,m,x,y;
int dist[NMAX];
void bfs(){
int node,i;
while(!q.empty()){
node = q.front();
q.pop_front();
for(i = 0 ; i < v[node].size(); i++)
if(v[node][i].hi + dist[node] < dist[v[node][i].lo]){
dist[v[node][i].lo] = v[node][i].hi + dist[node];
q.push_back(v[node][i].lo);
}
}
}
int main(){
int i,a,b,d;
variabila A;
f >> n >> m >> x >> y;
for(i = 1 ; i <= m ; i++){
f >> a >> b >> d;
A.lo = b;
A.hi = d;
v[a].push_back(A);
A.lo = a;
A.hi = -d;
v[b].push_back(A);
}
for(i = 1 ; i <= n ; i++)
dist[i] = inf;
q.push_back(x);
dist[x] = 0;
bfs();
g << dist[y];
return 0;
}