Pagini recente » Cod sursa (job #2966005) | Cod sursa (job #1491820) | Cod sursa (job #2383700) | Cod sursa (job #1482454) | Cod sursa (job #2602745)
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
ifstream fin ("maxflow.in");
ofstream fout ("maxflow.out");
int n,m,i,x,y,c,flux;
int viz[1005];
int f[1005][1005];
int maxf[1005][1005];
pair <bool, int> ans;
pair <bool, int> dfs(int poz, int mini)
{
viz[poz]=true;
if(poz==n)
return {true, mini};
for(int i=1;i<=n;i++)
{
if(!viz[i] && maxf[poz][i]>f[poz][i])
{
auto ans = dfs(i, min(mini, maxf[poz][i]-f[poz][i]));
if(ans.f)
{
f[poz][i]+=ans.s;
f[i][poz]-=ans.s;
return ans;
}
}
}
return {false, 0};
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y>>c;
maxf[x][y]=c;
}
while(true)
{
for(i=1;i<=n;i++)
viz[i]=false;
ans = dfs(1, 110005);
if(!ans.f)
break;
flux+=ans.s;
}
fout<<flux;
return 0;
}