Pagini recente » Cod sursa (job #3155080) | Cod sursa (job #2489242)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int MAX = 30005;
const int INF = 2e7+1;
int N, M, X, Y, d[MAX], sat, i;
vector < pair <int, int> > A[MAX];
queue <int> q;
void solve() {
for(int k = 1; k <= N; ++k)
d[k] = INF;
d[X] = 0;
q.push(X);
while(!q.empty()) {
sat = q.front();
q.pop();
for(unsigned int j = 0; j < A[sat].size(); ++j) {
i = A[sat][j].first;
if(d[sat] + A[sat][j].second < d[i]) {
d[i] = d[sat] + A[sat][j].second;
q.push(i);
}
}
}
}
int main() {
fin >> N >> M >> X >> Y;
int a, b, cost;
while(M--) {
fin >> a >> b >> cost;
A[a].push_back({b, cost});
A[b].push_back({a, -cost});
}
solve();
fout << d[Y];
}