Cod sursa(job #3240675)

Utilizator CosminaneBoac Mihai Cosmin Cosminane Data 19 august 2024 17:35:31
Problema Flux maxim Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
using namespace std;
vector <int> v[1005];
int muchii[1005][1005], f[1005], n;
int dfs(int x, int flux) {
	int i, folos, r;
	if (x == n) {
		return flux;
	}
	r = 0;
	for (i = 0; i < v[x].size(); i++) {
		if (f[v[x][i]] == 0) {
			f[v[x][i]] = 1;
			folos = dfs(v[x][i], min(muchii[x][v[x][i]], flux));
			muchii[x][v[x][i]] -= folos;
			f[v[x][i]] = 0;
			r += folos;
			flux -= folos;
			if (flux == 0) {
				return r;
			}
		}
	}
	return r;
}
int main() {
	int m, i, x, y, z, flux;
	ifstream fin( "maxflow.in" );
	ofstream fout( "maxflow.out" );
	fin >> n >> m;
	for (i = 0; i < m; i++) {
		fin >> x >> y >> z;
		v[x].push_back( y );
		muchii[x][y] = z;
	}
	flux = 0;
	for (i = 0; i < v[1].size(); i++) {
		flux += muchii[1][v[1][i]];
	}
	f[1] = 1;
	fout << dfs( 1, flux );
	return 0;
}