Pagini recente » Cod sursa (job #461222) | Cod sursa (job #2539803) | Cod sursa (job #2132603) | Cod sursa (job #343290) | Cod sursa (job #2195135)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <queue>
#define cin in
#define cout out
using namespace std;
int n, m, x, y;
struct neigh {
int s;
int d;
};
vector<list<neigh>> graph;
void read() {
ifstream in("sate.in");
cin >> n >> m >> x >> y;
graph.resize(n + 1);
for (int k = 1; k <= m; ++k) {
int i, j, d;
cin >> i >> j >> d;
graph[i].push_back({ j,d });
graph[j].push_back({ i,d });
}
in.close();
}
int bfs(int x, int y) {
queue<int> q;
vector<bool> vis(n + 1, false);
int d = 0, i;
q.push(x);
vis[x] = true;
while (!q.empty()) {
i = q.front();
q.pop();
if (i == y) {
return d;
}
for (const auto it : graph[i]) {
if (!vis[it.s]) {
vis[it.s] = true;
q.push(it.s);
if (it.s > i) d = d + it.d;
else d = d - it.d;
}
}
}
}
int main() {
ofstream out("sate.out");
read();
cout << bfs(x, y);
out.close();
return 0;
}