Pagini recente » Cod sursa (job #2307209) | Cod sursa (job #2134978) | Cod sursa (job #876623) | Cod sursa (job #1708290) | Cod sursa (job #2890404)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
#define NMAX 30005
#define MMAX 100025
#define INF 2000000000
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
queue <int> q;
vector < pair <int, int > > vecini[NMAX];
int dist[NMAX];
int main()
{
int n, m, x, y, i, j, a, b, c;
in >> n >> m >> x >> y;
for (i = 1; i <= m; ++i)
{
in >> a >> b >> c;
vecini[a].push_back({b, c});
vecini[b].push_back({a, -c});
}
for (i = 1; i < NMAX; ++i)
{
dist[i] = INF;
}
q.push(x);
dist[x] = 0;
while (!q.empty())
{
int nod = q.front();
for (i = 0; i < vecini[nod].size(); ++i)
{
int vecin = vecini[nod][i].first;
int distanta = vecini[nod][i].second;
if (dist[nod] + distanta < dist[vecin])
{
q.push(vecin);
dist[vecin] = dist[nod] + distanta;
}
}
q.pop();
}
out << dist[y];
return 0;
}