传送门

最小割,一眼最小割,这个甚至不需要建什么模型,直接按它给的建就好了,最小割=最大流,跑个最大流就行了,注意:图是无向图

#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
using namespace std;
#define min(a,b) (a<b?a:b)
#define rg register
int dis[1000010],ans,sum,n,m,cnt=1,s,t,inf=1e9+7,pre[6000001],nxt[6000001],h[1000010],v[6000001],cur[1000010];queue<int>q;
void read(int &x) {char ch; bool ok;for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
inline void add(int x,int y,int z)
{pre[++cnt]=y,nxt[cnt]=h[x],h[x]=cnt,v[cnt]=z;pre[++cnt]=x,nxt[cnt]=h[y],h[y]=cnt,v[cnt]=z;
}
inline bool bfs()
{memset(dis,0,sizeof dis);q.push(s),dis[s]=1;while(!q.empty()){int x=q.front();q.pop();for(rg int i=h[x];i;i=nxt[i])if(!dis[pre[i]]&&v[i])dis[pre[i]]=dis[x]+1,q.push(pre[i]);}return dis[t];
}
inline int dfs(int x,int flow)
{if(x==t||!flow)return flow;int f=flow;for(rg int &i=cur[x];i;i=nxt[i])if(v[i]&&dis[pre[i]]>dis[x]){int y=dfs(pre[i],min(v[i],f));f-=y,v[i]-=y,v[i^1]+=y;if(!f)return flow;}if(f==flow)dis[x]=-1;return flow-f;
}
int main()
{read(n),read(m),s=1,t=n*m;for(rg int i=1,x;i<=n;i++)for(rg int j=1;j<m;j++)read(x),add((i-1)*m+j,(i-1)*m+j+1,x);for(rg int i=1,x;i<n;i++)for(rg int j=1;j<=m;j++)read(x),add((i-1)*m+j,i*m+j,x);for(rg int i=1,x;i<n;i++)for(rg int j=1;j<m;j++)read(x),add((i-1)*m+j,i*m+j+1,x);for(;bfs();ans+=dfs(s,inf))memcpy(cur,h,sizeof h);printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/lcxer/p/10223422.html

bzoj1001:[BeiJing2006]狼抓兔子相关推荐

  1. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  2. BZOJ1001[BeiJing2006]狼抓兔子——最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  3. [BZOJ1001]: [BeiJing2006]狼抓兔子

    题目描述 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对 ...

  4. BZOJ1001 [BeiJing2006]狼抓兔子 (网络流)

    题意分析 一看就是一道网络流的题目,然后上去最大流直接搞. 然后发现超时了,所以学了一波当前弧优化,然后就过了. 然后我觉得还可以再快一点,就IO加速了一下, 发现速度提高了400ms. 嗯,FAST ...

  5. bzoj1001 [BeiJing2006]狼抓兔子(最小割/平面图最大流转对偶图最短路)

    首先这题显然就是求一个最小割.然后跑dinic加点优化也是可以过的. 这题还有一种更妙的做法:st平面图最大流转对偶图最短路.大概做法就是首先在原图中加一条s->t的边,然后把原图的一个面当作一 ...

  6. 【BZOJ1001】狼抓兔子题解

    BZOJ1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还 ...

  7. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23822  Solved: 6012 [Submit ...

  8. 1001: [BeiJing2006]狼抓兔子(对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23595  Solved: 5940 Descrip ...

  9. 【BZOJ1001】狼抓兔子

    [BZOJ1001]狼抓兔子 题面 bzoj 题解 懒得平面图转对偶图了,直接最小割板子加优化. #include <iostream> #include <cstdio> # ...

最新文章

  1. 0.7秒完成动漫线稿上色,爱奇艺发布AI上色引擎
  2. Typora添加右键新建Markdown文件
  3. ffmpeg视频学习网站
  4. 从茶叶蛋到互联网思维
  5. 就算是蜗牛,也有爬到树顶的那一天!~
  6. 面试官系统精讲Java源码及大厂真题 - 41 突破难点:如何看 Lambda 源码
  7. 《2021多多阅读报告》发布,95后、00后图书消费潜力攀升,大学生群体拼单量同比增长387%...
  8. java oracle 换行,oracle中Clob字段中的回车换行在jsp中展示的问题
  9. (十七)Activitivi5之组任务分配
  10. 从Android界面开发谈起
  11. 『中级篇』docker之CI/CD持续集成-(终结篇)(77)
  12. 安装Python3.5后,pip报错Fatal error in launcher: Unable to create process using ‘“‘解决方案
  13. 如何在Visual Studio中切换自动换行?
  14. 谷歌翻译退出中国,官方因其使用率过低
  15. win7电脑便签怎么弄
  16. 离线安装CDH5集群及相关软件
  17. Logback第八章:MDC(Mapped Diagnostic Context)
  18. [每天一个知识点]12-Maven怎么读
  19. 非磺酸型离子液体([pmim]HSO4、[bmim]HSO4、[bpy]HSO4、[ppy]HSO4、[pmim]BF、[pmim]CF3SO3、[pmim]H2PO4)的定制合成
  20. 学习竞争情报的第一阶段——读书

热门文章

  1. 转:关于CCDISK的优化
  2. [收集]Visual C#中调用Windows API
  3. 47.内存连续分配管理方式有哪几种?
  4. 对于bhuman中striker文件解析
  5. 计算机辅助药物合成投什么期刊,中国药物化学杂志审稿快吗
  6. wincc远程服务器配置,wincc实现远程访问的方法
  7. 049_汉字Unicode编码范围
  8. 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
  9. linux下ssh文件配置,允许root远程用密码登录
  10. 美特斯邦威java面试_在美特斯邦威工作一个月,我学到了什么