Pagini recente » Cod sursa (job #2575833) | Cod sursa (job #2322332) | Cod sursa (job #736478) | Cod sursa (job #1468000)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main() {
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
int points, relations, source, destination;
cin >> points >> relations >> source >> destination;
points++;
vector<pair<int, int>> adj_graph[30005];
int distances[30005];
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));
}
queue<int> to_visit;
vector<bool> visited(points);
to_visit.push(source);
visited[source] = true;
distances[source] = 0;
while (!to_visit.empty() && !visited[destination]) {
int current = to_visit.front();
to_visit.pop();
for (pair<int, int> next : adj_graph[current]) {
if (!visited[next.first]) {
distances[next.first] = distances[current] + next.second;
to_visit.push(next.first);
visited[next.first] = true;
}
}
}
printf("%d\n", distances[destination]);
return 0;
}