Pagini recente » Cod sursa (job #1953378) | Cod sursa (job #67231) | Cod sursa (job #2137801) | Cod sursa (job #1356452) | Cod sursa (job #882910)
Cod sursa(job #882910)
#include <fstream>
using namespace std;
ifstream f("maxflow.in");
ofstream g("maxflow.out");
int T[10001],n,m,x,y,c,C[1001][1001],F[1001][1001],s,d;
int min (int x, int y)
{
if (x<y) return x;
return y;
}
bool BFS (int s, int d)
{
int st=1,dr=1,i,nod,Q[10001];
Q[1]=s, T[s]=-1;
for (i=2;i<=n;i++) T[i]=0;
while (st<=dr)
{
nod=Q[st];
for (i=1;i<=n;i++)
if (!T[i] && C[nod][i] > F[nod][i])
{
Q[++dr]=i;
T[i]=nod;
if (i==d) return true;
}
st++;
}
return false;
}
void FLUX ()
{
int flux=0,i,s=1,d=n;
while ( BFS (1,n) )
{
int r=9999999;
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;
}
g<<flux<<'\n';
}
int main ()
{
f>>n>>m;
for (int i=1;i<=m;i++)
{
f>>x>>y>>c;
C[x][y]=c;
}
FLUX();
return 0;
}