Pagini recente » Cod sursa (job #3209877) | Cod sursa (job #2558444) | Cod sursa (job #1249157) | Cod sursa (job #1974065) | Cod sursa (job #3187117)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int DIM = 30010;
int n, m, x, y;
int dist[DIM];
queue<int> q;
vector<pair<int, int>> l[DIM];
void bfs(int start) {
q.push(start);
dist[start] = 0;
while (!q.empty()) {
int node = q.front();
q.pop();
for (auto adjElem : l[node]) {
int adjNode = adjElem.first;
int adjDist = adjElem.second;
if (dist[adjNode] == -1) {
if (node < adjNode)
dist[adjNode] = dist[node] + adjDist;
else
dist[adjNode] = dist[node] - adjDist;
q.push(adjNode);
}
}
}
}
int main() {
fin >> n >> m >> x >> y;
for (int i = 1; i <= m; i++) {
int a, b, c;
fin >> a >> b >> c;
l[a].push_back(make_pair(b, c));
l[b].push_back(make_pair(a, c));
}
for (int i = 1; i <= n; i++)
dist[i] = -1;
bfs(x);
fout << dist[y];
return 0;
}