Pagini recente » Cod sursa (job #2326453) | Cod sursa (job #877507) | Cod sursa (job #75218) | Cod sursa (job #1116373) | Cod sursa (job #2475703)
#include<bits/stdc++.h>
#define N 1030
using namespace std;
int rs, n,m;
queue<int>Q;
int viz[N], a[N][N];
vector<int>V[N];
int BFS(int x) {
Q.push(x);
for (int i=2; i<=n; i++) viz[i]=0;
viz[x]=-1;
while (Q.size()) {
x=Q.front(); Q.pop();
for (auto it: V[x]) {
if (!viz[it] && a[x][it]>0) {
viz[it]=x;
Q.push(it);
}
}
}
return viz[n]!=0;
}
int main() {
ifstream cin("maxflow.in");
ofstream cout("maxflow.out");
cin>>n>>m;
for (int i=1; i<=m; i++) {
int x,y,c; cin>>x>>y>>c;
V[x].push_back(y);
V[y].push_back(x);
a[x][y]+=c;
}
while (BFS(1)) {
int flow=2e9;
for (int i=n; viz[i]!=-1; i=viz[i]) {
flow=min(flow, a[viz[i]][i]);
}
rs+=flow;
for (int i=n; viz[i]!=-1; i=viz[i]) {
a[viz[i]][i]-=flow;
}
}
cout<<rs;
}