Pagini recente » Cod sursa (job #2493327) | Cod sursa (job #368619) | Cod sursa (job #2902581) | Cod sursa (job #2551642) | Cod sursa (job #2642077)
#include<bits/stdc++.h>
using namespace std;
#define INIT ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define mp make_pair
#define pb push_back
#define ft first
#define sc second
#define ll long long
#define pii pair<int, int>
#define count_bits __builtin_popcount
#define int ll
ifstream fin("maxflow.in"); ofstream fout("maxflow.out");
#define cin fin
#define cout fout
int n, m;
int c[1010][1010];
int r[1010][1010];
vector<int> g[1010];
bool v[1010];
int fn=0;
int dfs(int s, int cut){
v[s]=true;
if(s==n){fn+=cut;v[n]=false; return cut;}
int res=0;
for(int i:g[s]){
if( (r[s][i]<c[s][i]) && (v[i]==false) ){
int ret=dfs(i, min(cut, c[s][i]-r[s][i]));
if(ret>0){
r[s][i]+=ret; r[i][s]-=ret;
res=ret; break;
}
}
}
v[s]=false;
return res;
}
int32_t main(){
INIT
cin>>n>>m;
while(m--){
int x,y; cin>>x>>y; cin>>c[x][y];
//c[y][x]=c[x][y];
g[x].pb(y); g[y].pb(x);
}
while(true){
int cut=dfs(1, 1e9);
//fin+=cut;
if(cut<=0){break;}
}
/*for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
cout<<r[i][j]<<" ";
}
cout<<"\n";
}*/
cout<<fn;
return 0;
}