POJ 2536 二分匹配 匈牙利算法 || 网络流 (三)

2014-11-24 02:42:07 · 作者: · 浏览: 5
= 0 ;
for (int i = head[now] ; ~i ;i = ed[i].next )
{
int e = ed[i].e ;
int l = ed[i].l ;
if(deep[e] == deep[now] + 1 && l > 0 && (f - flow))
{
int mm = min(l,f - flow ) ;
int nn = dinic_dfs(e,mm) ;
flow += nn ;
ed[i].l -= nn ;
ed[i ^ 1].l += nn ;
}
}
if(!flow)deep[now] = -2 ;
return flow ;
}

int dinic()
{
int flow = 0 ;
while(dinic_bfs())

{
flow += dinic_dfs(S,inf) ;
}
return flow ;
}
int main()
{
while(cin >> n >> m >> s >> v )
{
S = 0 ,T = n + m + 1 ;
init() ;
REP(i,1,n)cin >> a[i].x >> a[i].y ;
REP(i,1,m)cin >> b[i].x >> b[i].y ;
build() ;
cout << n - dinic() < }
return 0;
}