BZOJ 大视野 1001 狼抓兔子 解题报告
2015-02-02 14:54
316 查看
纯粹网络流 , 输入略麻烦,注意双向边
#include<cstdio> #include<cstring> #include<iostream> using namespace std; struct node { int x,y,c,next,other; }a[6110000]; int len,first[1110000]; int list[1110000],h[1110000]; int st,ed,head,tail,n,m; void ins( int x,int y,int c ) { int k1,k2; k1=++len; k2=++len; a[k1].x=x; a[k1].y=y; a[k1].c=c; a[k2].x=y; a[k2].y=x; a[k2].c=c; a[k1].next = first[x]; first[x] = k1; a[k2].next = first[y]; first[y] = k2; a[k1].other = k2; a[k2].other = k1; } bool bfs() { memset( h,0,sizeof h ); memset( list,0,sizeof list ); h[st]=1; list[1]=st; head=tail=1; while( head<=tail ) { int x=list[head]; for( int k=first[x];k;k=a[k].next ) { int y=a[k].y; if( !h[y] && a[k].c ) { h[y] = h[x]+1; list[ ++tail ] = y; } } head++; } return h[ed]>0; } int dfs( int x,int flow ) { if( x==ed ) return flow; int delta=0,y,p; for( int k=first[x];k;k=a[k].next ) { int y=a[k].y; if( h[y] == h[x]+1 && a[k].c && delta<flow ) { p=dfs( y,min( flow-delta,a[k].c ) ); delta+=p; a[k].c-=p; a[ a[k].other ].c+=p; } } if( delta == 0 )h[x] = 0; return delta; } int main() { memset( first,0,sizeof first ); len = 0; int i,j,x,k,delta; scanf( "%d%d",&n,&m ); st = 1; ed = n*m; for( i=1;i<=n;i++ ) for( j=1;j<m;j++ ) { scanf( "%d",&x ); k = (i-1)*m+j; ins( k,k+1,x ); } for( i=1;i<n;i++ ) for( j=1;j<=m;j++ ) { scanf("%d",&x); k = (i-1)*m+j; ins( k,k+m,x ); } for( i=1;i<n;i++ ) for( j=1;j<m;j++ ) { scanf("%d",&x); k = (i-1)*m+j; ins( k,k+m+1,x ); } k=0; while( bfs() ) { while( delta=dfs( st,0x7fffffff ) ) k+=delta; } printf("%d\n",k); return 0; }
相关文章推荐
- [bzoj1001]狼抓兔子解题报告(最大流最小割定理)
- BZOJ 4027 [HEOI 2015] 兔子与樱花 解题报告
- BZOJ 1001 网络流最小割 解题报告
- BZOJ大视野 1054: [HAOI2008]移动玩具 解题报告
- BZOJ大视野 1088: [SCOI2005]扫雷Mine 解题报告
- BZOJ 大视野 2761: [JLOI2011]不重复数字 解题报告
- bzoj 3505 数三角形 组合数 解题报告
- bzoj 1631: [Usaco2007 Feb]Cow Party 解题报告
- [bzoj4621] Tc605 解题报告
- BZOJ1001 [Beijing2006] 狼抓兔子
- BZOJ 3106 [cqoi 2013] 对抗搜索 解题报告
- NOIP2015 D2T3 洛谷2680 BZOJ4326 运输计划 解题报告
- BZOJ1001: [BeiJing2006]狼抓兔子 (最小割)
- 【bzoj1001】【最短路】【对偶图】【最大流转最小割】狼抓兔子题解
- BZOJ3343 教主的魔法 解题报告【数据结构】【分块】
- BZOJ 3224 TREAP 解题报告
- BZOJ 4341 [CF253 Printer] 解题报告
- BZOJ 2005 [Noi 2010] 数论 解题报告
- BZOJ 1913 计算几何+排列组合 解题报告
- BZOJ1001狼抓兔子(网络流最小割)