Cod sursa(job #2299606)

Utilizator ezioconnorVlad - Gabriel Iftimescu ezioconnor Data 9 decembrie 2018 19:49:16
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#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;
}