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

  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. 一键运行CIS安全扫描,集群安全无忧!

    CIS安全扫描是Rancher 2.4推出的其中一个重磅功能,旨在帮助用户快速.有效地加强集群的安全性.本文将详细介绍CIS安全扫描这一功能,包含详细的操作demo. 本文来自Rancher Labs ...

  2. js循环数组方法some和forEach怎么用

    forEach不支持break和return.一般普通循环都是用forEach ar arr1=["aa","bb","aa"," ...

  3. LTE网络概述

    LTE主要由两部分组成:无线接入技术演进(E-UTRAN)+系统架构演进(SAE):其中,SAE主要含有的是演进型分组交换核心网(EPC),其控制处理部分为移动性管理实体(MME),数据承载部分称为业 ...

  4. 201771010113 李婷华 《面向对象程序设计(Java)》第十一周总结

    一.理论知识部分 第九章  集合 1.数据结构介绍: 线性结构:线性表,栈,队列,串,数组,文件.非线性结构:树,图. 散列表:又称为哈希表. 散列表算法的基本思想是:以结点的关键字为自变量,通过一定 ...

  5. STM32 进行软件复位的方法

    platform:stm32f103xx include:core_cm3.h /** \brief System Reset \details Initiates a system reset re ...

  6. Java UDP小结

    UDP: * 发送端                                                                                           ...

  7. 多线程测试时的辅助类--CountDownLatch

    多线程时,很多时候由于mian线程与多线程结束时间不可控,造成无法测试 辅助测试类---CountDownLatch 我看的视频教程匿名内部类无法使用外部的变量,所以CountDownLatch定义为 ...

  8. [hdu3486]rmq+枚举优化

    题意:给n个数,求最小的段数,使得每一段的最大值之和大于给定的k.每一段的长度相等,最后若干个丢掉. 思路:从小到大枚举段数,如果能o(1)时间求出每一段的和,那么总复杂度是O(n(1+1/2+1/3 ...

  9. linux-设置代理和取消代理

    设置代理: export http_proxy="http://proxy-XXXXX" export https_proxy="https://proxy-XXXXX: ...

  10. java ->String、StringBuffer、StringBuilder三者之间的区别

    1.首先说运行速度,速度由快到慢排列:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuil ...