Pagini recente » Cod sursa (job #2273103) | Cod sursa (job #3003162) | Cod sursa (job #531764) | Cod sursa (job #3032384) | Cod sursa (job #1304751)
#include<fstream>
#include<vector>
using namespace std;
int n, m, x, y, i, j, p, u, a, b, c;
vector<pair<int, int>> v[30001];
pair<int, int> val;
int s[30001], d[30001];
ifstream fin("sate.in");
ofstream fout("sate.out");
int main(){
fin>> n >> m >> x >> y;
for(i = 1; i <= m; i++){
fin>> a >> b >> c;
val.first = b;
val.second = c;
v[a].push_back(val);
val.first = a;
v[b].push_back(val);
}
p = 1;
for(i = 0; i < v[x].size(); i++){
s[++u] = v[x][i].first;
d[v[x][i].first] = v[x][i].second;
}
while(p <= u){
for(i = 0; i < v[s[p]].size(); i++){
if(d[v[s[p]][i].first] == 0){
if(x < s[p]){
if(v[s[p]][i].first > s[p]){
d[v[s[p]][i].first] = v[s[p]][i].second + d[s[p]];
}
else{
if(x < v[s[p]][i].first){
d[v[s[p]][i].first] = d[s[p]] - v[s[p]][i].second;
}
else{
d[v[s[p]][i].first] = v[s[p]][i].second - d[s[p]];
}
}
}
else{
if(v[s[p]][i].first > s[p]){
if(x > v[s[p]][i].first){
d[v[s[p]][i].first] = d[s[p]] - v[s[p]][i].second;
}
else{
d[v[s[p]][i].first] = v[s[p]][i].second - d[s[p]];
}
}
else{
d[v[s[p]][i].first] = v[s[p]][i].second + d[s[p]];
}
}
if(v[s[p]][i].first == y){
break;
}
else{
s[++u] = v[s[p]][i].first;
}
}
}
p++;
}
fout<< d[y];
return 0;
}