Pagini recente » Cod sursa (job #2238631) | Cod sursa (job #1680129) | Cod sursa (job #2892849) | Cod sursa (job #2673175) | Cod sursa (job #2108405)
#include <fstream>
#include <vector>
#define DEF 30010
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
int n, m, start, dest, p, u, viz[DEF];
pair < int, int > c[DEF];
vector < pair < int, int > > D[DEF];
int main () {
fin >> n >> m >> start >> dest;
for (int i = 1; i <= n; ++ i) {
int x, y, c;
fin >> x >> y >> c;
D[x].push_back (make_pair (y, c));
D[y].push_back (make_pair (x, c));
}
c[++ u] = make_pair (start, 0);
viz[start] = 1;
while (p <= u) {
int nod = c[p].first;
int cost = c[p].second;
for (int i = 0; i < D[nod].size (); ++ i) {
if (viz[D[nod][i].first] == 0) {
viz[D[nod][i].first] = 1;
int new_cost = cost;
if (nod < D[nod][i].first) {
new_cost += D[nod][i].second;
}
else {
new_cost -= D[nod][i].second;
}
c[++ u] = make_pair (D[nod][i].first, new_cost);
if (D[nod][i].first == dest) {
fout << new_cost;
return 0;
}
}
}
++ p;
}
return 0;
}