Pagini recente » Cod sursa (job #2542278) | Cod sursa (job #808338) | Cod sursa (job #679410) | Cod sursa (job #211901) | Cod sursa (job #1913402)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector<int> ls[30005], lc[30005];
queue <int> q;
int n, m, x, y, i, j, c, l, inc, fin;
bool incoada[30005];
int d[30005];
int main() {
f >> n >> m >> inc >> fin;
for (i = 1; i <= n; i++)
d[i] = 20000005;
if (inc>fin) swap(inc,fin);
for (i = 1; i <= m; i++) {
f >> x >> y >> c;
ls[x].push_back(y);
lc[x].push_back(c);
ls[y].push_back(x);
lc[y].push_back(-c);
}
q.push(inc);
incoada[inc] = 0;
d[inc] = 0;
while (q.empty() == 0) {
x = q.front();
q.pop();
incoada[x] = 0;
l = ls[x].size();
for (i = 0; i < l; i++) {
y = ls[x][i];
c = lc[x][i];
if (d[x] + c < d[y]) {
d[y] = d[x]+c;
if (incoada[y])
continue;
incoada[y] = 1;
q.push(y);
}
}
}
g << d[fin];
}