YEAH

  题目链接

  终于做对这道题啦    建图的艰辛难以言表- -

  顺便说一句我队列转STL啦

  狼抓兔子的地图符合平面图定义,于是将该图转成对偶图并求出对偶图的最短路即可。

  这篇博客给了我极大的帮助,现将链接放上

  xiaoyimi

  粘上自己的代码

  

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cctype>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<queue>
  8.  
  9. using namespace std;
  10.  
  11. queue<int> q;
  12.  
  13. inline long long read(){
  14. long long num=,f=;
  15. char ch=getchar();
  16. while(!isdigit(ch)){
  17. if(ch=='-') f=-;
  18. ch=getchar();
  19. }
  20. while(isdigit(ch)){
  21. num=num*+ch-'';
  22. ch=getchar();
  23. }
  24. return num*f;
  25. }
  26.  
  27. struct Edge{
  28. int next,to,val;
  29. }edge[];
  30. int head[],num;
  31. inline void add(int from,int to,int val){
  32. edge[++num]=(Edge){head[from],to,val};
  33. head[from]=num;
  34. }
  35.  
  36. int disa[][],disb[][],id[][][];
  37. int ID,Start,End;
  38. bool vis[];
  39. int dst[];
  40.  
  41. int main(){
  42. memset(dst,/,sizeof(dst));
  43. int n=read(),m=read();
  44. End=n*m+;
  45. for(int i=;i<=n;++i)
  46. for(int j=;j<m;++j)
  47. disa[i][j]=read();
  48. for(int i=;i<n;++i)
  49. for(int j=;j<=m;++j)
  50. disb[i][j]=read();
  51. if(n==){
  52. int a=0x7fffffff;
  53. for(int i=;i<m;++i) a=min(a,disa[][i]);
  54. printf("%d",a);
  55. return ;
  56. }
  57. if(m==){
  58. int a=0x7fffffff;
  59. for(int i=;i<n;++i) a=min(a,disb[i][]);
  60. printf("%d",a);
  61. return ;
  62. }
  63.  
  64. for(int i=;i<n;++i)
  65. for(int j=;j<m;++j){
  66. int x=read();
  67. id[i][j][]=++ID;
  68. id[i][j][]=++ID;
  69. add(id[i][j][],id[i][j][],x);
  70. add(id[i][j][],id[i][j][],x);
  71. }
  72. for(int i=;i<n;++i){
  73. add(Start,id[i][][],disb[i][]);
  74. add(id[i][][],Start,disb[i][]);
  75. add(id[i][m-][],End,disb[i][m]);
  76. add(End,id[i][m-][],disb[i][m]);
  77. }
  78. for(int i=;i<n;++i)
  79. for(int j=;j<m-;++j){
  80. add(id[i][j][],id[i][j+][],disb[i][j+]);
  81. add(id[i][j+][],id[i][j][],disb[i][j+]);
  82. }
  83. for(int i=;i<m;++i){
  84. add(Start,id[n-][i][],disa[n][i]);
  85. add(id[n-][i][],Start,disa[n][i]);
  86. add(id[][i][],End,disa[][i]);
  87. add(End,id[][i][],disa[][i]);
  88. }
  89. for(int i=;i<n-;++i)
  90. for(int j=;j<m;++j){
  91. add(id[i][j][],id[i+][j][],disa[i+][j]);
  92. add(id[i+][j][],id[i][j][],disa[i+][j]);
  93. }
  94. q.push(Start);dst[Start]=;
  95. while(!q.empty()){
  96. int from=q.front();vis[from]=;q.pop();
  97. for(int i=head[from];i;i=edge[i].next){
  98. int to=edge[i].to;
  99. if(dst[to]>dst[from]+edge[i].val){
  100. dst[to]=dst[from]+edge[i].val;
  101. if(vis[to]) continue;
  102. vis[to]=;
  103. q.push(to);
  104. }
  105. }
  106. }
  107. printf("%d",dst[End]);
  108. return ;
  109. }

【Bzoj】1001狼抓兔子(平面图最小割转对偶图最短路)的更多相关文章

  1. BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路

    问题描述 BZOJ1001 LG4001 题解 平面图最小割=对偶图最短路 假设起点和终点间有和其他边都不相交的一条虚边. 如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个 ...

  2. bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...

  3. [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】

    题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...

  4. BZOJ_2001_[BeiJing2006]狼抓兔子_最小割转对偶图

    BZOJ_2001_[BeiJing2006]狼抓兔子 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 分析:思路同NOI2010海拔. ...

  5. BZOJ 1001 狼抓兔子 平面图的最小割

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1001 题目大意: 见链接 思路: 求最小割,平面图的最小割等价于对偶图的最短路 直接建 ...

  6. bzoj 1001: [BeiJing2006]狼抓兔子 平面图最小割

    平面图跑最大流 可以转换为其对偶图跑最短路 一个环对应一个割  找到最小环(即最短路)极为所求,注意辅助边的建立 加入读入优化  不过时间还是一般  估计是dij写的不好   大神勿喷~~~ /*** ...

  7. 2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割)

    2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割) https://www.luogu.com.cn/problem/P4001 题意: 把图分成两部分需要的最 ...

  8. BZOJ 2007 海拔(平面图最小割转对偶图最短路)

    首先注意到,把一个点的海拔定为>1的数是毫无意义的.实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这 ...

  9. bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路)

    bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路) 题目描述: bzoj  luogu 题解时间: 首先考虑海拔待定点的$h$都应该是多少 很明显它们都是$0$或$1$,并且所 ...

随机推荐

  1. Android学习总结(十四) ———— ListView Item多布局的实现

    一.基本概念 实现一个Item的多布局.像我们经常在用的各种即时通讯工具,QQ.微信等,假设他们的会话界面是ListView实现的,那么ListView就有多种Item布局,要实现ListView里面 ...

  2. An internal error occurred during: "Map/Reduce location status updater". java.lang.NullPointerException

    eclipse配置hadoop 2.6 服务器做的虚拟机,因为window是的hadoop会出现意想不到的错误,因为,我做了ubuntu的虚拟机供我使用 在虚拟机中进行映射设置 在eclipse中dr ...

  3. ios项目icon和default图片命名规则

    一.应用图片标准iOS控件里的图片资源,苹果已经做了相应的升级,我们需要操心的是应用自己的图片资源.就像当初为了支持iPhone 4而制作的@2x高分辨率版本(译者:以下简称高分)图片一样,我们要为i ...

  4. ERROR 14856 --- [reate-882003853] com.alibaba.druid.pool.DruidDataSource : create connection error, url: jdbc:mysql://localhost:3306/xhb?useUnicode=true&characterEncoding=UTF-8, errorCode 1045, sta

    ERROR 14856 --- [reate-882003853] com.alibaba.druid.pool.DruidDataSource : create connection error, ...

  5. JavaWeb项目实现图片验证码

    一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 这种图片验证方式是我们最常见的形式,它可以有效的防范恶意攻击者采用恶意工具,调用“动态验证码短信获 ...

  6. k8s 基础概念和术语

    Master k8s里的master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本k8s所有控制命令都发给它,它负责整个具体的执行过程,后面执行操作基本 ...

  7. 八 个优秀的 jQuery Mobile 教程

    jQuery Mobile 是 jQuery 在手机上和平板设备上的版本.jQuery Mobile不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架.虽然j ...

  8. ios之UIWebView(2)

    UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控件,我们可以用它来浏览网页.打开文档等等.这篇文章我将使用这个控件,做一个简易的浏览器.如下图: 我们创建一个Window-bas ...

  9. 两种常见JS面向象写法

    基于构造函数 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { ...

  10. 51nod 1265 四点共面——计算几何

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...