Pagini recente » Cod sursa (job #1857028) | Cod sursa (job #1613070) | Cod sursa (job #324099) | Cod sursa (job #694526) | Cod sursa (job #1939019)
#include <bits/stdc++.h>
using namespace std;
ifstream f("maxflow.in");
ofstream g("maxflow.out");
#define LE 1066
int M[LE][LE];
int infinit=100000000;
bool viz[LE];
int n,m;
int father[LE];
void dfs(int nod){
viz[nod]=true;
for(int i=1;i<=n;++i){
if (viz[i]==false&&M[nod][i]>0){
dfs(i);
father[i]=nod;
}
}
}
int main(){
f>>n>>m;
for(int i=1;i<=m;++i){
int xx,yy,cc;
f>>xx>>yy>>cc;
M[xx][yy]=cc;
}
int flux_final=0;
while (true){
for(int i=1;i<=n;++i){
viz[i]=false;
}
dfs(1);
if (viz[n]==false){
break;
}
int fmax=infinit;
int node=n;
while (node!=1){
fmax=min(fmax,M[father[node]][node]);
node=father[node];
}
node=n;
while (node!=1){
M[father[node]][node]-=fmax;
M[node][father[node]]+=fmax;
node=father[node];
}
flux_final+=fmax;
}
g<<flux_final<<'\n';
}