Cod sursa(job #2890404)

Utilizator stefandutastefandutahoria stefanduta Data 15 aprilie 2022 15:02:27
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#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;
}