Pagini recente » Cod sursa (job #1909205) | Cod sursa (job #448343) | Cod sursa (job #1964235) | Cod sursa (job #2262875) | Cod sursa (job #2378894)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define VMAX 1000000000
#define MAX 1010
#define x first
#define y second
using namespace std;
int n,m,a,b,c,ans,ac,ansa;
int p[MAX],fl[MAX][MAX];
bool acc[MAX];
vector<int> nd[MAX];
queue<int> q;
int main()
{
ifstream f ("maxflow.in");
ofstream g ("maxflow.out");
f>>n>>m;
for(int i=1;i<=m;i++)
f>>a>>b>>c,
nd[a].push_back(b),
fl[a][b]=c;
while(1){
for(int i=1;i<=n;i++)acc[i]=p[i]=0;
q.push(1);
while(!q.empty()){
ac=q.front(),q.pop();
for(auto i:nd[ac])
if(!acc[i]&&fl[ac][i]){
acc[i]=1;
p[i]=ac;
q.push(i);
}
}
if(acc[n]){
ansa=VMAX;
for(int i=n;i!=1;i=p[i])
ansa=min(ansa,fl[p[i]][i]);
ans+=ansa;
for(int i=n;i!=1;i=p[i]) fl[p[i]][i]-=ansa;
} else break;
}
g<<ans;
f.close ();
g.close ();
return 0;
}