#include using namespace std; #define mp make_pair #define pb push_back #define st first #define nd second typedef long long ll; typedef long double ld; typedef pair pii; #define maxn 4005 #define inf 1000000000 int n, m, E, res; int in[maxn], out[maxn]; vector v[maxn]; int cap[maxn][maxn]; int cur[maxn]; int dis[maxn]; queue q; void bfs(){ fill(cur, cur+2*n+2, 0); fill(dis, dis+2*n+2, -1); dis[0]=0; q.push(0); while(!q.empty()){ int w=q.front(); q.pop(); for(int i=0; i0){ dis[u]=dis[w]+1; q.push(u); } } } } int dfs(int w, int flow){ if(flow==0) return 0; if(w==E){ res+=flow; return flow; } int RES=0; for(int i=cur[w]; i