Pagini recente » Cod sursa (job #3134654) | Cod sursa (job #1927243) | Cod sursa (job #939819) | Cod sursa (job #1973756) | Cod sursa (job #2195155)
#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;
break;
}
}
}
}
int main() {
ofstream out("sate.out");
read();
cout << bfs(x, y);
out.close();
/*for (int i = 1; i <= n; ++i) {
cout << i << ": ";
for (const auto it : graph[i])
cout << it.s << '-' << it.d << ' ';
cout << endl;
}*/
return 0;
}