Pagini recente » Cod sursa (job #1076889) | Cod sursa (job #2915231) | Cod sursa (job #1213124) | Rating Onofrei Paul Cristian (cponofrei) | Cod sursa (job #2246193)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int m, X, Y, i, j, t, d, dist[30003];
short c[30003], crt, var, p, u, a, b, n;
char f[30003];
vector<int> v[30003], vec[30003];
int main(){
fin>>n>>m>>X>>Y;
for(i=1;i<=m;i++){
fin>>a>>b>>d;
v[a].push_back(b);
vec[a].push_back(d);
v[b].push_back(a);
vec[b].push_back(d);
}
p = u = 1;
c[1] = X;
f[X] = 1;
while(p<=u){
crt = c[p];
for(i=0;i<v[crt].size();i++){
var = v[crt][i];
if(f[var] == 0){
f[var] = 1;
c[++u] = var;
if((crt < X && var < crt) || (crt > X && var > crt))
dist[var] = vec[crt][i] + dist[crt];
else
if((var < X && crt < var) || (var > X && crt > var))
dist[var] = -vec[crt][i] + dist[crt];
else
dist[var] = vec[crt][i] - dist[crt];
if(var == Y){
fout<<dist[var];
return 0;
}
}
}
p++;
}
return 0;
}