Pagini recente » Cod sursa (job #2601121) | Cod sursa (job #2727757) | Cod sursa (job #1242886) | Cod sursa (job #2451442) | Cod sursa (job #2299606)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int NMAX = 30001;
int n, m, x, y, distanta[NMAX];
bool vizitat[NMAX];
vector < pair <int, int> > Muchii[NMAX];
queue <int> coada;
void bfs(int start)
{
int nod;
vizitat[start] = 1;
coada.push(start);
while (!coada.empty())
{
nod = coada.front();
coada.pop();
vizitat[nod] = 1;
for (int i = 0; i < Muchii[nod].size(); ++i)
{
if (vizitat[Muchii[nod][i].first] == 0)
{
if (Muchii[nod][i].first > nod)
distanta[Muchii[nod][i].first] = distanta[nod] + Muchii[nod][i].second;
else
distanta[Muchii[nod][i].first] = distanta[nod] - Muchii[nod][i].second;
coada.push(Muchii[nod][i].first);
if (Muchii[nod][i].first == y)
return;
}
}
}
}
void citire()
{
int a, b, c;
in >> n >> m >> x >> y;
for (int i = 1; i <= m; ++i)
{
in >> a >> b >> c;
Muchii[a].push_back(make_pair(b, c));
Muchii[b].push_back(make_pair(a, c));
}
bfs(x);
out << distanta[y];
}
int main()
{
citire();
return 0;
}