1001: [BeiJing2006]狼抓兔子

题目:传送门

题解:

   听说这题当初是大难题...可惜当年没有网络流hahahha

   现在用网络流的思想就很容易解决了嘛

   给什么连什么,注意是双向边,然后跑最大流...AC

代码:

  

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<algorithm>
  6. #define N 1100000
  7. using namespace std;
  8. struct node
  9. {
  10. int x,y,c,next,other;
  11. }a[];int len,last[];
  12. int n,m,head,tail,st,ed;
  13. void ins(int x,int y,int c)
  14. {
  15. int k1,k2;
  16. len++;k1=len;
  17. a[len].x=x;a[len].y=y;a[len].c=c;
  18. a[len].next=last[x];last[x]=len;
  19.  
  20. len++;k2=len;
  21. a[len].x=y;a[len].y=x;a[len].c=c;
  22. a[len].next=last[y];last[y]=len;
  23.  
  24. a[k1].other=k2;
  25. a[k2].other=k1;
  26. }
  27. int list[],h[];
  28. bool bt_h()
  29. {
  30. memset(h,,sizeof(h));h[st]=;
  31. list[]=st;head=;tail=;
  32. while(head!=tail)
  33. {
  34. int x=list[head];
  35. for(int k=last[x];k;k=a[k].next)
  36. {
  37. int y=a[k].y;
  38. if(h[y]== && a[k].c>)
  39. {
  40. h[y]=h[x]+;
  41. list[tail++]=y;
  42. }
  43. }
  44. head++;
  45. }
  46. if(h[ed]>)return true;
  47. return false;
  48. }
  49. int find_flow(int x,int flow)
  50. {
  51. if(x==ed)return flow;
  52. int s=,t;
  53. for(int k=last[x];k;k=a[k].next)
  54. {
  55. int y=a[k].y;
  56. if(h[y]==h[x]+ && a[k].c> && flow>s)
  57. {
  58. t=find_flow(y,min(a[k].c,flow-s));
  59. s+=t;
  60. a[k].c-=t;a[a[k].other].c+=t;
  61. }
  62. }
  63. if(s==)h[x]=;
  64. return s;
  65. }
  66. int main()
  67. {
  68. while(scanf("%d%d",&n,&m)!=EOF)
  69. {
  70. len=;memset(last,,sizeof(last));
  71. st=;ed=n*m;
  72. for(int i=;i<=n;i++)
  73. for(int j=;j<m;j++)
  74. {
  75. int t;
  76. scanf("%d",&t);
  77. ins((i-)*m+j,(i-)*m+j+,t);
  78. }
  79. for(int i=;i<n;i++)
  80. for(int j=;j<=m;j++)
  81. {
  82. int t;
  83. scanf("%d",&t);
  84. ins((i-)*m+j,i*m+j,t);
  85. }
  86. for(int i=;i<n;i++)
  87. for(int j=;j<m;j++)
  88. {
  89. int t;
  90. scanf("%d",&t);
  91. ins((i-)*m+j,i*m+j+,t);
  92. }
  93. int ans=;
  94. while(bt_h())ans+=find_flow(st,);
  95. printf("%d\n",ans);
  96. }
  97. return ;
  98. }

bzoj1001: [BeiJing2006]狼抓兔子(初识是你最小割)的更多相关文章

  1. [bzoj1001][BeiJing2006]狼抓兔子_网络流_最小割转对偶图

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

  2. BZOJ1001 BeiJing2006 狼抓兔子 【网络流-最小割】*

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

  3. [BZOJ1001][BeiJing2006]狼抓兔子(最小割转最短路|平面图转对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 31805  Solved: 8494[Submit][ ...

  4. BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 19528  Solved: 4818[Submit][ ...

  5. BZOJ1001: [BeiJing2006]狼抓兔子【最短路+对偶图】

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Se ...

  6. bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  7. BZOJ1001: [BeiJing2006]狼抓兔子(优化的dinic或转化对偶图求最短路)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 30078  Solved: 7908[Submit][ ...

  8. BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec   ...

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

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

随机推荐

  1. DQL命令(查询)

     select *或字段1,字段2...     from 表名     [where 条件]       提示:*符号表示取表中所有列:没有where语句表示        查询表中所有记录:有wh ...

  2. 2015 Multi-University Training Contest 5 hdu 5349 MZL's simple problem

    MZL's simple problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  3. WinServer-win7通过powershell操作AD-从接触到放弃

    额....我想在win7上练习AD的powershell命令 看了这篇帖子,他们说在WIN7上没法导入powershell的模块,只能在SERVER 上弄 https://social.technet ...

  4. CSS学习(四)

    伪类(Pseudo-classes) CSS伪类是用来添加一些选择器的特殊效果. 伪类的语法: selector:pseudo-class {property:value;} CSS类也可以使用伪类: ...

  5. sigprocmask和信号阻塞

    注意阻塞和忽略,是有区别的. 阻塞只是暂时的,忽略是就没了. 参数:how:用于指定信号修改的方式,可能选择有三种:SIG_BLOCK //加入信号到进程屏蔽.SIG_UNBLOCK //从进程屏蔽里 ...

  6. FPGA中亚稳态——让你无处可逃

    1. 应用背景 1.1         亚稳态发生原因 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery ti ...

  7. JAVA设计模式之【迭代器模式】

    迭代器模式 聚合类,聚合对象 电视机遥控器,迭代器,遍历局和对象中的成员 灵活新增遍历方法 将负责遍历数据的方法提取出来,封装到专门的类中,实现数据存储和数据遍历分离.这就是迭代器模式. 灵活性,可扩 ...

  8. 搞定ubuntu下环境变量的配置

    Ubuntu Linux系统环境变量配置文件: /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. ...

  9. MySQL学习(二)——SQL语句创建删除修改以及中文乱码问题

    一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create ...

  10. Caffe Loss分析

    Caffe_Loss 损失函数为深度学习中重要的一个组成部分,各种优化算法均是基于Loss来的,损失函数的设计好坏很大程度下能够影响最终网络学习的好坏.派生于 \(LossLayer\),根据不同的L ...