Pagini recente » Atasamentele paginii Blat | Cod sursa (job #3289700) | Cod sursa (job #2667348) | Cod sursa (job #2893667) | Cod sursa (job #3302441)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
int bfs(vector<vector<pair<int, int>>>& g, int s, int e) {
vector<int> vis(g.size(), 0);
queue<pair<int, int>> q;
q.push({s, 0});
vis[s] = 1;
while(!q.empty()) {
pair<int, int> n = q.front();
q.pop();
if (n.first == e) {
return n.second;
}
for (pair<int, int> v : g[n.first]) {
if (!vis[v.first]) {
vis[v.first] = 1;
q.push({v.first, n.second + v.second});
}
}
}
return -1;
}
int main() {
ifstream in("sate.in");
ofstream out("sate.out");
int n, m, x, y;
in >> n >> m >> x >> y;
vector<vector<pair<int, int>>> g(n+1);
for (int i = 0; i < m; i++) {
int a, b, d;
in >> a >> b >> d;
g[a].push_back({b, d});
g[b].push_back({a, -d});
}
cout << bfs(g, x, y);
out << bfs(g, x, y);
return 0;
}