Cod sursa(job #2553112)

Utilizator ducabogdanDuca Bogdan ducabogdan Data 21 februarie 2020 17:03:46
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
#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;
bool vizitat[30003];
int rezultat = 0;
bool gasit = false;

void Citire();
int Dfs(int nod);

int main()
{
    Citire();
    Dfs(x);
    fout << rezultat;

}
int Dfs(int nod)
{
    vizitat[nod] = true;
    if (nod == y)
    {
        gasit = true;
        return rezultat;
    }

    for (int i = 0; i < G[nod].size(); ++i)
    {
        int vecin = G[nod][i].first;
        if (!vizitat[vecin])
        {
            return rezultat = Dfs(vecin) + G[nod][i].second;

            if (!gasit)
            {
                rezultat -= G[nod][i].second;
                vizitat[vecin] = false;
            }
        }
    }
}

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));
    }
}