Pagini recente » Planificare infoarena | Cod sursa (job #1979235) | Cod sursa (job #404928) | Monitorul de evaluare | Cod sursa (job #2917085)
#include<bits/stdc++.h>
using namespace std;
ifstream F("maxflow.in");
ofstream G("maxflow.out");
#define N 1001
int i,j,n,y,l,k,w[N],g[N][N],e[N][N],b[N],c[N];
int main()
{
for(F>>n>>k;F>>i>>j>>l;g[i][w[i]++]=j,g[j][w[j]++]=i,e[i][j]=l);
while(1) {
for(memset(b,0,sizeof b),j=c[0]=c[1]=1;j<=c[0]&&!b[n];++j)
for(k=c[j],i=0;i<w[k];++i)
if(!b[g[k][i]]&&e[k][g[k][i]])
b[c[++c[0]]=g[k][i]]=k;
if(!b[n])
return G<<y,0;
for(i=0;i<w[n];++i)
if(b[g[n][i]]&&e[g[n][i]][n]) {
for(l=2e5,b[n]=j=k=g[n][i];j>1;l=min(l,e[b[j]][j]),j=b[j]);
for(l=min(l,e[k][n]),y+=l,j=n;j>1;e[b[j]][j]-=l,e[j][b[j]]+=l,j=b[j]);
}
}
}