|
]=fir[u[e]];fir[u[e]]=e; } int max_flow(int s,int t) { memset(flow,0,sizeof flow); int total_flow=0; for (;;) { memset(d,0,sizeof d); d[s]=INF; int f=0,r=0; q[0]=s; while (f<=r) { int _u=q[f++]; for (int e=fir[_u];~e;e=nex[e]) { if (!d[v[e]] && cap[e]>flow[e]) { q[++r]=v[e]; p[v[e]]=e; d[v[e]]=min(d[u[e]],cap[e]-flow[e]); } } } if (d[t]==0) break; for (int e=p[t];;e=p[u[e]]) { flow[e]+=d[t]; flow[e^1]-=d[t]; if (u[e]==s) break; } total_flow+=d[t]; } return total_flow; } int main() { #ifndef ONLINE_JUDGE freopen(/home/fcbruce/文档/code/t,r,stdin); #endif // ONLINE_JUDGE int n,np,nc,m,_u,_v,_w; while (~scanf(%d %d %d %d,&n,&np,&nc,&m)) { e_max=0; int s=n,t=n+1; memset(fir,-1,sizeof fir); for (int i=0;i
?
dinic算法实现:
?
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
?
|