Cod sursa(job #2558505)

Utilizator teomdn001Moldovan Teodor teomdn001 Data 26 februarie 2020 16:58:38
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define P  pair <int, int>
#define VVP vector <vector <P> >
using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");

VVP G;
int n, m, x, y;
int dist[30003];
int rezultat = 0;
queue <int> Q;

void Citire();
int Bfs(int x, int y);

int main()
{
    Citire();
    rezultat = Bfs(x, y);
    fout << rezultat;
}

int Bfs(int x, int y)
{
    dist[x] = 0;
    Q.push(x);
    while (!Q.empty())
    {
        int nod = Q.front();
        Q.pop();
        for (int i = 0; i < G[nod].size(); ++i)
        {
            int vecin = G[nod][i].first;
            int cost = G[nod][i].second;

            if (dist[vecin] == 0)
            {
                dist[vecin] = dist[nod] + cost;
                Q.push(vecin);
                if (vecin == y)
                    return dist[y];

            }
        }
    }

    return dist[y];
}

void Citire()
{
    fin >> n >> m >> x >> y;
    G = VVP(n + 1);
    for (int i = 1; i <= m; ++i)
    {
        int nod1, nod2, cost;
        fin >> nod1 >> nod2 >> cost;
        G[nod1].push_back(make_pair(nod2, cost));
        G[nod2].push_back(make_pair(nod1, -cost));
    }
}