Pagini recente » Cod sursa (job #2440954) | Cod sursa (job #1817685) | Cod sursa (job #2700246) | Cod sursa (job #807935) | Cod sursa (job #1938704)
#include <fstream>
using namespace std;
#define MAX 1003
ifstream f("maxflow.in");
ofstream g("maxflow.out");
int M[MAX][MAX];
int infinit=100000000;
bool viz[MAX];
int n,m;
int T[MAX];
void dfs(int nod){
viz[nod]=true;
for(int i=1;i<=n;++i){
if (viz[i]==false){
if (M[nod][i]>0){
dfs(i);
T[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 i=n;
while (i!=1){
fmax=min(fmax,M[T[i]][i]);
i=T[i];
}
i=n;
while (i!=1){
M[T[i]][i]-=fmax;
M[i][T[i]]+=fmax;
i=T[i];
}
flux_final+=fmax;
}
g<<flux_final<<'\n';
}