Pagini recente » Cod sursa (job #802380) | Cod sursa (job #1043142) | Cod sursa (job #701924) | Cod sursa (job #2394154) | Cod sursa (job #2972183)
#include <bits/stdc++.h>
#define N 1007
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int n,m;
/// val nod
int a[N][N];
int rev[N][N];
int ans;
bool vizitat[N];
void Citire()
{
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int x,y,val;
fin >> x >> y >> val;
a[x][y]=val;
}
fin.close();
}
int mi;
int DFS(int x)
{
vizitat[x]=1;
if( x==n )
return mi;
for(int y=1;y<=n;y++)
if( a[x][y] and !vizitat[y] )
{
int aux=mi;
mi=min(mi,a[x][y]);
int r=DFS(y);
if( r!=-1 )
{
a[x][y]-=r;
a[y][x]+=r;
return r;
}
mi=aux;
}
// for(int y=1;y<=n;y++)
// if( a[y][x] and !vizitat[y] )
// {
// int aux=mi;
// mi=min(mi,a[y][x]);
// int r=DFS(y);
// if( r!=-1 )
// {
// a[y][x]-=r;
//// a[x][y]-=r;
//
// return r;
// }
// mi=aux;
// }
return -1;
}
void Ford_Fulkerson()
{
int x=0;
while( x!=-1 )
{
for(int i=1;i<=n;i++)
vizitat[i]=0;
mi= 110007;
x=DFS(1);
if( x!=-1 )
ans+=x;
}
}
int main()
{
Citire();
Ford_Fulkerson();
fout << ans << "\n";
fout.close();
return 0;
}