Pagini recente » Cod sursa (job #479843) | Cod sursa (job #205576) | Cod sursa (job #153963) | Junior Challenge 2008 | Cod sursa (job #3240675)
#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;
}