Pagini recente » Cod sursa (job #1388075) | Cod sursa (job #2807729) | Cod sursa (job #1328383) | Cod sursa (job #1954955) | Cod sursa (job #2918264)
#include <bits/stdc++.h>//Edmonds-Karp
using namespace std;
ifstream fin ("maxflow.in");
ofstream fout("maxflow.out");
const int dim=1009,inf=1e8;
vector<int>adj[dim];
int n,m;
int parent[dim];
int capacity[dim][dim];
int bfs(){
queue<pair<int,int>>q;
for(int i=1;i<=n;i++){
parent[i]=0;
}
parent[1]=-1;
q.push({1,inf});
while(!q.empty()){
int x=q.front().first,cur_flow=q.front().second;
for(int y:adj[x]){
if(!parent[y]&&capacity[x][y]){
parent[y]=x;
int min_flow=min(cur_flow,capacity[x][y]);
if(y==n){
return min_flow;
}
q.push({y,min_flow});
}
}
q.pop();
}
return 0;
}
signed main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,c;
fin>>x>>y>>c;
adj[x].push_back(y);
adj[y].push_back(x);
capacity[x][y]=c;
}
int max_flow=0;
while(int cur_flow=bfs()){
max_flow+=cur_flow;
int cur=n;
while(cur!=1){
int prev=parent[cur];
capacity[prev][cur]-=cur_flow;
capacity[cur][prev]+=cur_flow;
cur=prev;
}
}
fout<<max_flow;
}