Cod sursa(job #2529984)

Utilizator CristiVintilacristian vintila CristiVintila Data 24 ianuarie 2020 11:29:53
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100100
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");

int n, m, x, y, size, minim = NMAX, sum, frecv[NMAX];
vector< pair<int, int> > gr[NMAX];
vector<int> v, f;
bool viz[NMAX];

void citire() {
  fin >> n >> m >> x >> y;
  for (int i = 1; i <= m; i++) {
    int a, b, cost;
    fin >> a >> b >> cost;
    gr[a].push_back(make_pair(b, cost));
    gr[b].push_back(make_pair(a, -1 * cost));
  }
}

void DFS(int n_start, int n_end) {
  v.push_back(n_start);
  size++;
  viz[n_start] = true;
  if (n_start == n_end) {
    minim = min(minim, sum);
    sum = 0;
  }
  for (int i = 0; i < gr[n_start].size(); i++) {
    int comp = gr[n_start][i].first;
    int val = gr[n_start][i].second;
    if (!viz[comp]) {
      sum += val;
      DFS(comp, n_end);
      viz[comp] = false;
      size--;
      v.erase(v.begin() + size);
    }
  }
}

int main(int argc, const char * argv[]) {
  citire();
  DFS(x, y);
  fout << minim;
}