Pagini recente » Cod sursa (job #1647058) | Cod sursa (job #2130253) | Cod sursa (job #876574) | Cod sursa (job #2000617) | Cod sursa (job #1699636)
#include <iostream>
#include <fstream>
#include <queue>
#include <unordered_map>
using namespace std;
typedef pair<short,int> paer;
short x, y;
int sol;
void df(short sat, deque<paer> *vecini, unordered_map<short, int> *distante) {
if (sat == y) {
sol = (*distante)[sat];
}
for (int i=0; i<vecini[sat].size() && !sol; i++) {
if (!(*distante)[vecini[sat][i].first]) {
if (sat > vecini[sat][i].first) {
(*distante)[vecini[sat][i].first] = (*distante)[sat] - vecini[sat][i].second;
}
else {
(*distante)[vecini[sat][i].first] = (*distante)[sat] + vecini[sat][i].second;
}
df(vecini[sat][i].first, vecini, distante);
}
}
}
int main()
{
ifstream in("sate.in");
ofstream out("sate.out");
deque<paer> vecini[30001];
unordered_map<short,int> distante;
short n, a, b;
int d, i, m;
in>>n>>m>>x>>y;
for (i=0; i<m; i++) {
in>>a>>b>>d;
vecini[a].push_back(paer(b,d));
vecini[b].push_back(paer(a,d));
}
df(x, vecini, &distante);
out<<sol;
in.close();
out.close();
return 0;
}