bzoj1001 狼抓兔子 网络流(水)
2016-08-12 16:05
176 查看
这道题正解不是网络流,但是网络流(最小割)在这种图上跑得飞起,就能水(2016.8.12)。直接贴代码。
#include<iostream> #include<cstdio> #include<queue> using namespace std; struct bian{ int to,cap; }b[6000005]; int s,t; int fst[1000005],nxt[6000005],tot=1; void build(int f,int t,int d) { b[++tot].to=t; b[tot].cap=d; nxt[tot]=fst[f]; fst[f]=tot; } void insert(int f,int t,int d) { build(f,t,d); build(t,f,d); } queue<int> q; int d[1000005]; bool bfs() { for(int i=1;i<=t;i++) d[i]=0; d[s]=1;q.push(s); int u,v; while(!q.empty()) { u=q.front(); q.pop(); for(int i=fst[u];i;i=nxt[i]) { v=b[i].to; if(b[i].cap>0&&!d[v]) { d[v]=d[u]+1; q.push(v); } } } if(d[t]) return true; return false; } int cur[1000005]; int dfs(int u,int a) { if(u==t||a==0) return a; int &i=cur[u],ans=0; int v; for(;i;i=nxt[i]) { v=b[i].to; if(b[i].cap>0&&d[v]==d[u]+1) { int f=dfs(v,min(a,b[i].cap)); ans+=f;a-=f; b[i].cap-=f; b[i^1].cap+=f; } if(a==0) break; } return ans; } int inf=1e9; int maxflow() { int ans=0; while(bfs()) { for(int i=1;i<=t;i++) cur[i]=fst[i]; ans+=dfs(s,inf); } return ans; } void read(int &a) { a=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { a*=10; a+=c-'0'; c=getchar(); } } int main() { int n,m; scanf("%d%d",&n,&m); s=1;t=n*m; int w,x; for(int i=1;i<=n;i++) for(int j=1;j<m;j++) { read(w);x=(i-1)*m+j; insert(x,x+1,w); } int tot=0; for(int i=1;i<n;i++) for(int j=1;j<=m;j++) { read(w);tot++; insert(tot,tot+m,w); } for(int i=1;i<n;i++) for(int j=1;j<m;j++) { read(w);x=(i-1)*m+j; insert(x,x+m+1,w); } printf("%d",maxflow()); }
相关文章推荐
- bzoj1001 [BeiJing2006]狼抓兔子(网络流dinic算法||最短路spfa)
- bzoj1001(网络流,最小割)狼抓兔子
- 【网络流】【BZOJ1001】狼抓兔子
- BZOJ 1001[BeiJing2006]狼抓兔子 (网络流 Dinic)
- BZOJ1001 [BeiJing2006]狼抓兔子(网络流最小割)
- BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
- 【bzoj1001】【BeiJing2006】【狼抓兔子】【网络流】【平面图转对偶图】
- BZOJ1001狼抓兔子(网络流最小割)
- BZOJ1001 狼抓兔子(裸网络流)
- bzoj1001: [BeiJing2006]狼抓兔子(网络流模板题:最大流)
- [BZOJ 1001][BeiJing2006]狼抓兔子(网络流/SPFA)
- 【BZOJ1001】狼抓兔子(网络流)
- [bzoj1001][BeiJing2006]狼抓兔子_网络流_最小割转对偶图
- bzoj1001狼抓兔子——网络流平面图问题
- BZOJ1001狼抓兔子
- BZOJ 1001 狼抓兔子 (最大流)
- 【BZOJ1001】[BeiJing2006]狼抓兔子
- 【BZOJ1001】【BeiJing2006】狼抓兔子
- BZOJ 1001 [BeiJing2006]狼抓兔子
- 【bzoj1001】 [BeiJing2006]狼抓兔子