Pagini recente » Cod sursa (job #2559456) | Cod sursa (job #643910) | Cod sursa (job #1196911) | Cod sursa (job #3123778) | Cod sursa (job #882901)
Cod sursa(job #882901)
#include <fstream>
#include <queue>
#include <cstring>
#define INF 0x3f3f
using namespace std;
int m,S,D,n,T[10000],C[2400][2400],F[2400][2400];
ifstream f("maxflow.in");
ofstream g("maxflow.out");
int BF()
{
int i,now;
queue <int> Q;
Q.push(S);
memset(T,0,sizeof(T));
T[S]=-1;
while (!Q.empty()) {
now=Q.front();
Q.pop();
for (i=1;i<=n;i++)
if (T[i]==0 && C[now][i]>F[now][i])
{
Q.push(i);
T[i]=now;
if (i==D) return 1;
}
}
return 0;
}
int flux_max()
{
int r,i,flux=0;
while ( BF() )
{
r=INF;
i=D;
while (i!=S)
{
r=min(r,C[T[i]][i]-F[T[i]][i]);
i=T[i];
}
i=D;
while (i!=S)
{
F[T[i]][i] +=r;
F[i][T[i]] -=r;
i=T[i];
}
flux+=r;
}
return flux;
}
int main()
{
int i,x,y,c;
f>>n>>m;
S=1;D=n;
for (i=1;i<=m;i++) {
f>>x>>y>>c;
C[x][y]=c;
}
g<<flux_max();
return 0;
}