Pagini recente » Cod sursa (job #2185453) | Cod sursa (job #2672163) | Cod sursa (job #2756708) | Cod sursa (job #2397334) | Cod sursa (job #2971074)
#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;
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)
{
if( x==n )
return mi;
for(int y=1;y<=n;y++)
if( a[x][y] )
{
int aux=mi;
mi=min(mi,a[x][y]);
int r=DFS(y);
if( r!=-1 )
{
a[x][y]-=r;
return r;
}
mi=aux;
}
for(int y=1;y<=n;y++)
if( rev[x][y] )
{
int aux=mi;
mi=min(mi,rev[x][y]);
int r=DFS(y);
if( r!=-1 )
{
rev[x][y]-=r;
return r;
}
mi=aux;
}
return -1;
}
void Ford_Fulkerson()
{
int x=0;
while( x!=-1 )
{
mi= 110007;
x=DFS(1);
if( x!=-1 )
ans+=x;
}
}
int main()
{
Citire();
Ford_Fulkerson();
fout << ans << "\n";
fout.close();
return 0;
}