Pagini recente » Cod sursa (job #2791776) | Cod sursa (job #2954490) | Cod sursa (job #1691569) | Cod sursa (job #876852) | Cod sursa (job #2566940)
#include <iostream>
#include<fstream>
#include<queue>
#include<algorithm>
#include<vector>
#define vecin first
#define dist second
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int nmax = 30005;
const int mmax = 100050;
int n, m, x, y, d[nmax];
vector<pair<int, int> > graf[nmax];
queue<int> q;
int BFS_x_to_y(int start, int finnish ){
int nod_curent;
q.push(start);
d[start] = 0;
while(!q.empty()){
nod_curent = q.front();
q.pop();
if(nod_curent == finnish){
return d[finnish];
}
for(int i = 0; i < graf[nod_curent].size(); ++i){
int v = graf[nod_curent][i].vecin;
int k = graf[nod_curent][i].dist;
if(d[v] == 0 && v != 1){
q.push(v);
if( v < nod_curent ) d[v] = d[nod_curent] - k;
else d[v] = d[nod_curent] + k;
}
}
}
}
int main()
{
in >> n >> m >> x >> y;
for(int i = 1; i <= m; ++i){
int a, b, c; in >> a >> b >> c;
graf[a].push_back( make_pair(b, c) );
graf[b].push_back( make_pair(a, c) );
}
out<<BFS_x_to_y(x, y);
in.close();
out.close();
return 0;
}