裸的最小割,转化成最大流即可。

  1. #include <bits/stdc++.h>
  2. int n,m;
  3. int S,T;
  4. int mincost;
  5. int head[6001000],tot=1;
  6. int cur[6001000];
  7. int deep[1001000];
  8. int vis[1001000];
  9. std::queue<int>q;
  10. struct qwq{
  11. int to;
  12. int nxt;
  13. int flow;
  14. }e[6001000];
  15. int num(int x,int y){
  16. return (x-1)*m+y;
  17. }
  18. void add(int x,int y,int z){
  19. e[++tot]={y,head[x],z};
  20. head[x]=tot;
  21. e[++tot]={x,head[y],z};
  22. head[y]=tot;
  23. }
  24. bool bfs(){
  25. memset(deep,0,sizeof deep);
  26. deep[S]=1;
  27. q.push(S);
  28. while(!q.empty()){
  29. int X=q.front();
  30. q.pop();
  31. for(int i=head[X];i;i=e[i].nxt){
  32. int y=e[i].to;
  33. if(!deep[y]&&e[i].flow){
  34. deep[y]=deep[X]+1;
  35. q.push(y);
  36. }
  37. }
  38. }
  39. return deep[T];
  40. }
  41. int dfs(int x,int flow){
  42. if(x==T||!flow)
  43. return flow;
  44. int Flow=0;
  45. for(int &i=cur[x];i;i=e[i].nxt){
  46. int y=e[i].to;
  47. if(e[i].flow&&deep[y]==deep[x]+1){
  48. int w=dfs(y,std::min(flow,e[i].flow));
  49. if(w){
  50. e[i].flow-=w;
  51. e[i^1].flow+=w;
  52. Flow+=w;
  53. flow-=w;
  54. if(!flow)
  55. break;
  56. }
  57. }
  58. }
  59. return Flow;
  60. }
  61. void dinic(){
  62. int maxflow=0;
  63. while(bfs()){
  64. memcpy(cur,head,sizeof head);
  65. while(1){
  66. int w=dfs(S,0x3f3f3f3f);
  67. if(!w)
  68. break;
  69. maxflow+=w;
  70. }
  71. }
  72. printf("%d\n",maxflow);
  73. }
  74. main(){
  75. scanf("%d%d",&n,&m);
  76. S=num(1,1);
  77. T=num(n,m);
  78. for(int i=1;i<=n;++i)
  79. for(int j=2;j<=m;++j){
  80. int x;
  81. scanf("%d",&x);
  82. add(num(i,j-1),num(i,j),x);
  83. }
  84. for(int i=2;i<=n;++i)
  85. for(int j=1;j<=m;++j){
  86. int x;
  87. scanf("%d",&x);
  88. add(num(i-1,j),num(i,j),x);
  89. }
  90. for(int i=2;i<=n;++i)
  91. for(int j=2;j<=m;++j){
  92. int x;
  93. scanf("%d",&x);
  94. add(num(i-1,j-1),num(i,j),x);
  95. }
  96. dinic();
  97. return 0;
  98. }

BZOJ1001 狼抓兔子 题解的更多相关文章

  1. bzoj1001狼抓兔子 对偶图优化

    bzoj1001狼抓兔子 对偶图优化 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路 菜鸡总是要填坑的! 很明显让你求网格图的最 ...

  2. 【bzoj1001】【最短路】【对偶图】【最大流转最小割】狼抓兔子题解

    [BZOJ1001]狼抓兔子 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 18872  Solved ...

  3. BZOJ1001:狼抓兔子(最小割最大流+vector模板)

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

  4. BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA

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

  5. bzoj1001狼抓兔子

    1001: [BeiJing2006]狼抓兔子 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你 ...

  6. 【建图+最短路】Bzoj1001 狼抓兔子

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

  7. BZOJ1001 狼抓兔子(裸网络流)

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

  8. BZOJ1001 狼抓兔子 平面图转对偶图 最小割

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

  9. BZOJ1001 洛谷4001 [BJOI2006]狼抓兔子 题解

    题目 这个题目有多种解法,这个题也是一个比较经典的题了,正是因为他的多样的做法,这个题主要难在建图和优化,因为这是一个网格图,所以spfa肯定过不去,所以用最短路解法的话,只能用dij,而网络流也是要 ...

随机推荐

  1. Python基础03 id

    id id(x)对应变量x所引用对象的内存地址.可以把id(x)看成变量x的身份标识. is 有时在编程中需要与变量的身份标识打交道,但不是通过 id 函数,而是 is 操作符. The operat ...

  2. linux多线程入门

    linux下的多线程通过pthread实现,下面给个简单的例子. #include <stdio.h> #include <stdlib.h> #include <pth ...

  3. 最长递增子序列(Longest increasing subsequence)

    问题定义: 给定一个长度为N的数组A,找出一个最长的单调递增子序列(不要求连续). 这道题共3种解法. 1. 动态规划 动态规划的核心是状态的定义和状态转移方程.定义lis(i),表示前i个数中以A[ ...

  4. pycharm中的TODO注释用法

    pycharm 中可以在# 后面加TODO提示自己后续的开发动作. 点击pycharm又下角的小标签,会弹出一个列表,选择TODO选项. 进入TODO选项,可以看见所以设置的TODO,选择一个TODO ...

  5. 【Hadoop离线基础总结】oozie调度MapReduce任务

    目录 1.准备MR执行的数据 2.执行官方测试案例 3.准备我们调度的资源 4.修改配置文件 5.上传调度任务到hdfs对应目录 6.执行调度任务 1.准备MR执行的数据 MR的程序可以是自己写的,也 ...

  6. 【Hadoop离线基础总结】MapReduce增强(下)

    MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...

  7. u-boot 源码分析(1) 启动过程分析

    u-boot 源码分析(1) 启动过程分析 文章目录 u-boot 源码分析(1) 启动过程分析 前言 配置 源码结构 api arch board common cmd drivers fs Kbu ...

  8. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口

    目录 Java简介 Java语言基础组成 面向对象 对象 封装 构造函数 this关键字 static(静态关键字) 主函数 静态什么时候用呢? 面向对象(数组工具对象建立) 设计模式 继承 成员变量 ...

  9. 小心了!Kubernetes自动化操作工具将让你失去工作

    运行Kubernetes的人已经花费太多时间在操作上,企业正在考虑为Kubernetes编写自动化工具. 尽管IT部门的大部分职位都会增加,但职业顾问说,计算机操作员预计会减少.这个角色涉及运行She ...

  10. 2018-08-26 jQuery与javaScript的区别及核心方法

    1.jq对象就是js new Object 生成的普通对象. 2.jq对象与js对象,他们的方法不能共用! 3.jq对象与js对象的相互转化: js对象转jq对象 -> $(js_obj);// ...