Pagini recente » Cod sursa (job #2098082) | Cod sursa (job #2311960) | Cod sursa (job #1643628) | Cod sursa (job #2311947) | Cod sursa (job #3315555)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream cin("maxflow.in");
ofstream cout("maxflow.out");
const int N=1001;
int c[N][N];
vector<short> g[N];
queue<short> q;
int main()
{
int f=0,m,n;
for(cin>>n>>m;m--;) {
int i,j,k;
cin>>i>>j>>k,g[i].push_back(j),g[j].push_back(i),c[i][j]=k;
}
for(;;) {
short b[N]={0};
for(q.push(1),b[1]=1;!q.empty();q.pop()) {
int i=q.front();
for(int j:g[i])
if(!b[j]&&c[i][j])
q.push(j),b[j]=i;
}
if(!b[n])
return cout<<f,0;
for(int j:g[n])
if(c[j][n]&&b[j]) {
int h=c[j][n];
for(int i=j;i>1;h=min(h,c[b[i]][i]),i=b[i]);
f+=h,c[j][n]-=h,c[n][j]+=h;
for(int i=j;i>1;c[b[i]][i]-=h,c[i][b[i]]+=h,i=b[i]);
}
}
}