Pagini recente » Cod sursa (job #315762) | Cod sursa (job #1677611) | Cod sursa (job #1169657) | Cod sursa (job #2452654) | Cod sursa (job #1803231)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f ("sate.in");
ofstream t ("sate.out");
struct edges{
int dest,cost;};
vector <edges> v[30010];
int n,m,cost[30010];
bool vaz[30010];
int bfs(int nod,int target){int curent;
queue <int> q;
q.push(nod);
while (!q.empty()){
curent=q.front();
vaz[curent]=true;
q.pop();
for (auto i:v[curent])
if (!vaz[i.dest]){
q.push(i.dest);
if (i.dest>curent)
cost[i.dest]=cost[curent]-i.cost;
else
cost[i.dest]=cost[curent]+i.cost;
}
}
return 0;
}
int main()
{
int x,y,t1,t2,c;
f>>n>>m>>x>>y;
for (int i=0;i<m;++i)
f>>t1>>t2>>c,v[t1].push_back({t2,c}),v[t2].push_back({t1,c});
if (x>y) swap (x,y);
bfs(x,y);
t<<cost[x]-cost[y];
return 0;
}