题目描述

题解:

裸的最小割。

但是最大流跑不过去怎么办?

转变一下,既然最大流是一条左下<->右上的通路,我们可以把图划分为若干区域,

最后找左下到右上的最短路就行了。

代码:

  1. #include<queue>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. typedef long long ll;
  7. const int N = ;
  8. template<typename T>
  9. inline void read(T&x)
  10. {
  11. T f = ,c = ;char ch=getchar();
  12. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  13. while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
  14. x = f*c;
  15. }
  16. int n,m,s,t,hed[*N*N],cnt;
  17. int _id(int i, int j, int k) {
  18. if(i>n||j<)return ;
  19. if(i<||j>m)return n*m<<|;
  20. return (i - ) * m + j + k * n * m;
  21. }
  22. struct EG
  23. {
  24. int to,nxt;
  25. ll w;
  26. }e[*N*N];
  27. void ae(int f,int t,ll w)
  28. {
  29. e[++cnt].to = t;
  30. e[cnt].nxt = hed[f];
  31. e[cnt].w = w;
  32. hed[f] = cnt;
  33. }
  34. struct Pair
  35. {
  36. int x;
  37. ll d;
  38. Pair(){}
  39. Pair(int x,ll d):x(x),d(d){}
  40. friend bool operator < (Pair a,Pair b){return a.d>b.d;}
  41. }tp;
  42. ll dis[*N*N];
  43. bool vis[*N*N];
  44. void dij()
  45. {
  46. priority_queue<Pair>q;
  47. memset(dis,0x3f,sizeof(dis));dis[s]=;
  48. q.push(Pair(s,));
  49. while(!q.empty())
  50. {
  51. tp = q.top();
  52. q.pop();
  53. int u = tp.x;
  54. if(vis[u])continue;
  55. vis[u]=;
  56. for(int j=hed[u];j;j=e[j].nxt)
  57. {
  58. int to = e[j].to;
  59. if(dis[to]>dis[u]+e[j].w)
  60. {
  61. dis[to] = dis[u]+e[j].w;
  62. q.push(Pair(to,dis[to]));
  63. }
  64. }
  65. }
  66. }
  67. int main()
  68. {
  69. read(n),read(m);
  70. n--,m--;
  71. s = ,t = n*m<<|;
  72. for(int i=;i<=n+;i++)
  73. for(int w,j=;j<=m;j++)
  74. {
  75. read(w);
  76. ae(_id(i,j,),_id(i-,j,),w);
  77. ae(_id(i-,j,),_id(i,j,),w);
  78. }
  79. for(int i=;i<=n;i++)
  80. for(int w,j=;j<=m+;j++)
  81. {
  82. read(w);
  83. ae(_id(i,j,),_id(i,j-,),w);
  84. ae(_id(i,j-,),_id(i,j,),w);
  85. }
  86. for(int i=;i<=n;i++)
  87. for(int w,j=;j<=m;j++)
  88. {
  89. read(w);
  90. ae(_id(i,j,),_id(i,j,),w);
  91. ae(_id(i,j,),_id(i,j,),w);
  92. }
  93. dij();
  94. printf("%lld\n",dis[t]);
  95. return ;
  96. }

ICPC-Beijing 2006 狼抓兔子的更多相关文章

  1. P4001 [ICPC-Beijing 2006]狼抓兔子

    题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子 平面图 边与边只在顶点相交的图. 对偶图 对于一个平面图,都有其对应的对偶图. 平面图被划分出的每一个区域当作对偶图的一个点: 平 ...

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

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

  3. 洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子

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

  4. 解题:BJOI 2006 狼抓兔子

    题面 可以看出来是最小割,然后你就去求最大流了 这么大的范围就是让你用网络流卡的?咋想的啊=.=??? 建议还是老老实实用 平面图最小割等于其对偶图最短路 这个东西来做吧,虽然这个东西跑的也挺慢的,最 ...

  5. [BZOJ 2006] 狼抓兔子

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1001 [算法] 最小割 [代码] #include<bits/stdc++.h ...

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

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

  7. 【洛谷4001】 [ICPC-Beijing 2006]狼抓兔子(最小割)

    传送门 洛谷 Solution 直接跑最小割板子就好了. 代码实现 #include<stdio.h> #include<stdlib.h> #include<strin ...

  8. bzoj1001 [ICPC-Beijing 2006]狼抓兔子

    我满心以为本题正解为最短路,结果到处都是最大流…… 几乎所有的都写了什么“对偶图”跑最短路,但我真的不知道什么叫做对偶图---------------------------------------- ...

  9. 洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图

    正解:网络流+对偶图 解题报告: 传送门! $umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$ 然后网格图的话显然是个平面图,又看到数据范围$n ...

随机推荐

  1. thrift配置——windows客户端与linux服务端通信(C++)

    windows客户端: 1.首先要安装boost库 下载源文件 2.安装boost之前先要安装python-3.4.0.amd64,很多地方没有说,弄了很久 3.运行bootstrap.bat 生成b ...

  2. Codeforces702C【二分】

    题意: 给你几个城市,蜂窝塔量: 给出城市和塔的坐标可以重叠,非递减的方式给出: 输出最小的r,以至于所有的城市能被覆盖到: 思路: 目的就是要使每个城市覆盖到,那我对每个城市找离最近塔的距离,然后在 ...

  3. Codeforces Round #355 (Div. 2)C - Vanya and Label

    啊啊啊啊啊啊啊,真的是智障了... 这种题目,没有必要纠结来源.只要知道它的结果的导致直接原因?反正这句话就我听的懂吧... ">>"/"&" ...

  4. spring boot eureka server

    ServerApplication @EnableEurekaServer @SpringBootApplication public class ServerApplication { public ...

  5. python操作pymongo

    import pymongo from bson import ObjectId mongo_client = pymongo.MongoClient(host="127.0.0.1&quo ...

  6. UWP 实现分享功能

    一:需求 实现点击分享按钮,分享内容到微博,邮箱等.. like this 二:DataTransferManager 数据传输管理类 DataTransferManager dataTransfer ...

  7. Codeforces Round #544 (Div. 3) D. Zero Quantity Maximization

    链接:https://codeforces.com/contest/1133/problem/D 题意: 给两个数组a,b. 同时ci = ai * d + bi. 找到一个d使c数组中的0最多. 求 ...

  8. HAL之定时器

    一首先得对定时器的时钟与系统时钟的关系搞清楚,基本定时器的时钟来自APB1最大36MHZ.(定时器倍频值为1) 二 在STM32CubeMX中打开外设功能,时钟源选择内部:然后在配置定时器3中的参数设 ...

  9. Error: IO_ERROR : java.io.IOException: Error while connecting Oozie server. No of retries = 5. Exception = Connection refused (Connection refused)解决办法(图文详解)

    不多说,直接上干货! 问题详情 解决办法 Copy/Paste oozie.services property tag set from oozie-default.xml to oozie-site ...

  10. mongoDB内置文档定义

    在最近的设计数据库时,犯了一个低级的错误,就是设置内置文档是定义了错误了,导致数据取不出,去找了很多资料都无法解决.最后看了一了一下自己设置的model文件.配置错误,所以导致数据取不出了. 数据库时 ...