Pagini recente » Cod sursa (job #2831149) | Cod sursa (job #1803957) | Cod sursa (job #1633470) | Cod sursa (job #2482670) | Cod sursa (job #1468009)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int points, relations, source, destination;
vector<pair<int, int>> adj_graph[30005];
int distances[30005];
queue<int> to_visit;
int main() {
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
cin >> points >> relations >> source >> destination;
for (int i = 0; i < relations; i++) {
int from, to, cost;
cin >> from >> to >> cost;
adj_graph[from].push_back(make_pair(to, cost));
adj_graph[to].push_back(make_pair(from, -cost));
}
for (int i = 0; i <= points; i++)
distances[i] = 20000005;
to_visit.push(source);
distances[source] = 0;
while (distances[destination] == 20000005) {
int current = to_visit.front();
to_visit.pop();
for (pair<int, int> next : adj_graph[current]) {
if (distances[next.first] == 20000005) {
distances[next.first] = distances[current] + next.second;
to_visit.push(next.first);
}
}
}
cout << distances[destination] << endl;
return 0;
}