Pagini recente » Cod sursa (job #1408145) | Cod sursa (job #1302928) | Cod sursa (job #3187624) | Cod sursa (job #2903900) | Cod sursa (job #1697538)
#include <iostream>
#include <fstream>
#include <deque>
#include <map>
using namespace std;
bool viz[30000];
typedef pair<int,int> paer;
int main()
{
ifstream in("sate.in");
ofstream out("sate.out");
map<int,deque<paer>> vecini;
map<int,int> distante;
int n, m, x, y, d;
in>>n>>m>>x>>y;
int a, b, i;
for (i=0; i<m; i++) {
in>>a>>b>>d;
vecini[a].push_back(paer(b,d));
vecini[b].push_back(paer(a,d));
}
deque<int> bf;
int sat = x;
viz[sat] = true;
bf.push_front(sat);
while (!bf.empty()) {
sat = bf.front();
d = distante[sat];
bf.pop_front();
for (i=0; i<vecini[sat].size(); i++) {
if (!viz[vecini[sat][i].first]) {
viz[vecini[sat][i].first] = true;
if (sat > vecini[sat][i].first) {
distante[vecini[sat][i].first] = d - vecini[sat][i].second;
}
else {
distante[vecini[sat][i].first] = d + vecini[sat][i].second;
}
bf.push_back(vecini[sat][i].first);
}
}
}
out<<distante[y];
in.close();
out.close();
return 0;
}