Pagini recente » Cod sursa (job #13436) | Cod sursa (job #13460) | Cod sursa (job #2414442) | Cod sursa (job #82788) | Cod sursa (job #2363917)
#include <bits/stdc++.h>
using namespace std;
vector<int> dis[30001];
vector<int> lda[40000];
bool viz[30100];
int dis1[30100];
int main() {
int n, m, x, y;
int t1, t2, d;
ifstream cin("sate.in");
ofstream cout("sate.out");
cin >> n >> m >> x >> y;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dis[i].push_back(0);
}
}
for (int i = 0; i < m; i++) {
cin >> t1 >> t2 >> d;
lda[t1].push_back(t2);
lda[t2].push_back(t1);
dis[t1][t2] = d;
dis[t2][t1] = d;
}
queue<int> q;
for (auto &it: lda[x]) {
if (!viz[it]) {
q.push(it);
viz[it] = true;
if (x > it) {
dis1[it] = dis1[x] - dis[x][it];
} else {
dis1[it] = dis1[x] + dis[x][it];
}
}
}
while (!q.empty()) {
int now = q.front();
q.pop();
for (auto &it: lda[now]) {
if (!viz[it]) {
q.push(it);
viz[it] = true;
if (now > it) {
dis1[it] = dis1[now] - dis[now][it];
} else {
dis1[it] = dis1[now] + dis[now][it];
}
}
}
}
cout << dis1[y];
return 0;
}