Pagini recente » Cod sursa (job #2822308) | Cod sursa (job #2532755) | Cod sursa (job #2519611) | Cod sursa (job #2557293) | Cod sursa (job #2953557)
#include <bits/stdc++.h>
using namespace std;
ifstream in("maxflow.in");
ofstream out("maxflow.out");
const int Nmax = 1e3 + 5;
int Gr[Nmax][Nmax];
int N, M, min_path;
bool seen[Nmax];
bool path_found;
void dfs(int node, int min_cap)
{
seen[node] = 1;
if(path_found)
return;
if(node == N)
{
path_found = 1;
min_path = min_cap;
return;
}
for(int i = 1; i <= N; ++i)
if(!seen[i] && Gr[node][i] > 0)
{
dfs(i, min(min_cap,Gr[node][i]));
if(path_found)
{
Gr[node][i] -= min_path;
Gr[i][node] += min_path;
break;
}
}
}
int main()
{
in >> N >> M;
while(M--)
{
int x, y, cap;
in >> x >> y >> cap;
Gr[x][y] = cap;
}
do
{
path_found = 0;
memset(seen,0,sizeof(seen));
dfs(1,INT_MAX);
}
while(path_found);
int ans = 0;
for(int i = 1; i <= N; ++i)
ans += Gr[N][i];
out << ans;
return 0;
}