Pagini recente » Cod sursa (job #3254730) | Cod sursa (job #1692716) | Cod sursa (job #3160163) | Cod sursa (job #2763872) | Cod sursa (job #2278388)
#include <bits/stdc++.h>
#define Dim 1008
using namespace std;
ifstream f("maxflow.in");
ofstream g("maxflow.out");
int N,M,a,b,c,T[1008],C[Dim][Dim],ans;
vector < int > Vf[Dim];
int BFS()
{
int X[Dim],s=1,d=1;
memset(X,0,sizeof(X));
memset(T,0,sizeof(T));
X[1]=1; T[1]=-1;
while(s<=d)
{
int x=X[s++];
for(int i=1;i<=N;i++)
if(T[i]==0&&C[x][i]>0)
{
T[i]=x;
X[++d]=i;
if(i==N) return 1;
}
}
return 0;
}
int Flux_max()
{
while(BFS())
{
int cpmin=99999999,it=N;
while(it!=1)
{
cpmin=min(cpmin,C[T[it]][it]);
it=T[it];
}
it=N;
while(it!=1)
{
C[T[it]][it]-=cpmin;
C[it][T[it]]+=cpmin;
it=T[it];
}
ans+=cpmin;
}
return ans;
}
int main()
{
f>>N>>M;
for(int i=1;i<=M;i++)
{
f>>a>>b>>c;
C[a][b]+=c;
Vf[a].push_back(b);
Vf[b].push_back(a);
}
g<<Flux_max();
return 0;
}