题目链接:戳我
按理说以dinic\(O(M*N^2)\)的时间复杂度应该是过不去的(呃我也知道这个上界很松)。但是最小割确实可以水过去??
但是本着写正解的精神,我还是学了学平面图和对偶图,跑最短路的话时间复杂度应该是正确的。(大家可以去上网搜一下,或者看蒟蒻的OI网络流 简单学习笔记
所以就。。。建图呗。这种题最难的不就是建图嘛。
建议大家画一个图(图的范例比如说ljh dalao的这张qwq)
具体细节可以看代码。
注意n=1或者m=1的情况要特判。
然后因为点的上限(n-1)(m-1)*2+1,所以空间一定注意要开够qwqwq
代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define S 0
#define T (n-1)*(m-1)*2+1
#define MAXN 4000010
using namespace std;
int n,m,t,cur;
int dis[MAXN],done[MAXN],head[MAXN];
struct Node
{int u,d;friend bool operator <(struct Node x,struct Node y){return x.d>y.d;}
};
struct Edge{int nxt,to,dis;}edge[MAXN<<1];
inline void add(int from,int to,int dis)
{edge[++t].nxt=head[from],edge[t].to=to,edge[t].dis=dis,head[from]=t;edge[++t].nxt=head[to],edge[t].to=from,edge[t].dis=dis,head[to]=t;
}
inline void dij()
{priority_queue<Node>q;memset(dis,0x3f,sizeof(dis));memset(done,0,sizeof(done));q.push((Node){S,0});dis[S]=0;while(!q.empty()){int u=q.top().u; q.pop();if(done[u]) continue;done[u]=1;for(int i=head[u];i;i=edge[i].nxt){int v=edge[i].to;if(dis[u]+edge[i].dis<dis[v])dis[v]=dis[u]+edge[i].dis,q.push((Node){v,dis[v]});}}
}
int main()
{#ifndef ONLINE_JUDGEfreopen("ce.in","r",stdin);#endifscanf("%d%d",&n,&m);if(n==1){int minn=2147483647,cur;for(int i=1;i<m;i++)scanf("%d",&cur),minn=min(minn,cur);printf("%d\n",minn);return 0;}if(m==1){int minn=2147483647,cur;for(int i=1;i<n;i++)scanf("%d",&cur),minn=min(minn,cur);printf("%d\n",minn);return 0;}for(int i=1;i<=2*(n-1)+1;i+=2)for(int j=1;j<m;j++){scanf("%d",&cur);if(i==1) add(S,j,cur);else if(i==2*(n-1)+1) add((i-2)*(m-1)+j,T,cur);else add((i-2)*(m-1)+j,(i-1)*(m-1)+j,cur);}for(int i=1;i<2*(n-1)+1;i+=2)for(int j=1;j<=m;j++){scanf("%d",&cur);if(j==1) add(i*(m-1)+1,T,cur);else if(j==m) add(S,(i-1)*(m-1)+m-1,cur);else add((i-1)*(m-1)+j-1,i*(m-1)+j,cur);}for(int i=1;i<2*(n-1)+1;i+=2)for(int j=1;j<m;j++){scanf("%d",&cur);add((i-1)*(m-1)+j,i*(m-1)+j,cur);}dij();printf("%d\n",dis[T]);return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10298014.html

[BJ2006] 狼抓兔子相关推荐

  1. 狼抓兔子(平面图转对偶图)

    狼抓兔子(平面图转对偶图) 面对下面这样一个网格的地形: 道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的. 左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现 ...

  2. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

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

  3. 1001: [BeiJing2006]狼抓兔子

    /**************************************************************Problem: 1001User: whymheLanguage: C+ ...

  4. BZOJ1001 狼抓兔子 终于过了!

    时间来不及了,先贴代码吧!有时间再写. 好苦逼啊,WA了若干次,还有一次RE,一次TLE. 虽然主要运用的算法和资料都由师兄提供了.还是太弱了,太天真了. 首先,数据范围就WA了,RE了,TLE了. ...

  5. 1001: [BeiJing2006]狼抓兔子(对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23595  Solved: 5940 Descrip ...

  6. P2030 - 【BJOI2006】狼抓兔子

    P2030 - [BJOI2006]狼抓兔子 Description 八中OJ上本题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001  现 ...

  7. 【BZOJ1001】狼抓兔子

    [BZOJ1001]狼抓兔子 题面 bzoj 题解 懒得平面图转对偶图了,直接最小割板子加优化. #include <iostream> #include <cstdio> # ...

  8. 【bzoj1001】【狼抓兔子】

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

  9. bzoj1001/BJOI2006 狼抓兔子

    1001: [BeiJing2006]狼抓兔子(传送门) 图论新知识..没学过.. 平面图最小割等于对偶图的最短路 详见课件:http://wenku.baidu.com/view/8f1fde586 ...

  10. 【BZOJ1001】狼抓兔子题解

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

最新文章

  1. 图神经网络可以解决现实世界中的问题吗?
  2. CentOS 5.X 开机启动流程
  3. 凭借这 10 大算法,就可以主宰世界!
  4. BAT Window批量重命名
  5. 在URL参数中传递复杂对象
  6. java 4个系统,JSP系统的四个组成部分
  7. android radiogroup 获取点击位置_屏幕连点器,解放双手[Android]
  8. JavaScript doT模板引擎
  9. html链接sqlserver,js连接sqlserver进行查询
  10. cocos2dx 3.0 触摸机制
  11. camunda 流程执行追踪_从Activiti分裂而来的camunda BPM
  12. 迈信EP100伺服驱动器方案
  13. 适合英语学习的100部电影
  14. Android进阶知识(五):IPC基本概念之Binder、Binder工作机制及其原理
  15. 相信我,我们离成为废物阶级不远了!
  16. Rest-assured使用
  17. 51单片机定时器中断
  18. 在线测试手机性能软件,性能:三大跑分
  19. 探索鼎龙湾德萨斯牛仔小镇,欣赏粤西非遗文化的魅力
  20. 预告:年度乘用车前装超声波雷达市场,哪些供应商表现抢眼

热门文章

  1. dms mysql 工具_数据库管理工具DMS
  2. Python官方中文文档网址和Python标准库官方中文文档网址
  3. 《基于LSTM长短时神经网络的电机旋转振动单步预测》
  4. MATLAB数字水印系统
  5. Opengl 渲染YUYV(YUV422)图像
  6. 家庭组网 登录光猫超级账户(吉比特GM228-S)改桥接并使用路由器拨号上网 关闭QoS
  7. c语言中结构体习题,C语言之结构体练习题
  8. 小程序开发教程 微信小程序视频教程
  9. 谷粒商城-个人笔记(基础篇一)
  10. 华为电脑管家最新(11.1.1.95)版完美升级安装教程