【BZOJ1001】狼抓兔子(平面图转对偶图,最短路)

题面

BZOJ

洛谷

题解

这题用最小割可以直接做

今天再学习了一下平面图转对偶图的做法

大致的思路如下:

1.将源点到汇点中再补一条不与任何线段有交点的边。这条边把外侧无限大的区域划分为了两部分,一部分为\(S\)面,另外一部分为\(T\)面。

2.平面图的任何一条边一定只与两个面相连,将这两个边相连,权值为边的边权

此时\(S->T\)的最短路就是原来平面图中的最小割

伪证如下:

如果在对偶图上走了一条边,必定将原图中的一条边给割开

考虑一条\(S->T\)的路径,

一定沿着\(S\)平面割开了若干平面,使得\(S\)平面与\(T\)平面相连

因此,一条路径是原图中的一个割

割的大小就是路径的长度

因此,最小割就是对偶图上的最短路

代码如下:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 2222222
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
struct Line{int v,next,w;}e[6666666];
int h[MAX],cnt=1;
inline void Add(int u,int v,int w){e[cnt]=(Line){v,h[u],w};h[u]=cnt++;}
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >Q;
pair<int,int> u;
int dis[MAX],T;
bool vis[MAX];
int Dijkstra(int S)
{
Q.push(make_pair(0,S));
while(!Q.empty())
{
u=Q.top();Q.pop();
if(vis[u.second])continue;
dis[u.second]=u.first;vis[u.second]=true;
for(int i=h[u.second];i;i=e[i].next)
if(!vis[e[i].v])Q.push(make_pair(u.first+e[i].w,e[i].v));
}
return dis[T];
}
int p[2222][1111],tot;
int n,m,S;
int main()
{
n=read();m=read();
for(int i=1;i<=n+n-2;++i)
for(int j=1;j<m;++j)
p[i][j]=++tot;
T=tot+1;
for(int i=1,id=1;i<=n;++i,id+=2)
for(int j=1;j<m;++j)
{
int w=read(),u=S,v=T;
if(i!=1)v=p[id-1][j];
if(i!=n)u=p[id][j];
Add(u,v,w);Add(v,u,w);
}
for(int i=1,id=1;i<n;++i,id+=2)
for(int j=1;j<=m;++j)
{
int w=read(),u=S,v=T;
if(j!=1)u=p[id][j-1];
if(j!=m)v=p[id+1][j];
Add(u,v,w);Add(v,u,w);
}
for(int i=1,id=1;i<n;++i,id+=2)
for(int j=1;j<m;++j)
{
int w=read(),u=p[id][j],v=p[id+1][j];
Add(u,v,w);Add(v,u,w);
}
printf("%d\n",Dijkstra(0));
return 0;
}

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

  1. BZOJ1001 狼抓兔子 平面图转对偶图 最小割

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

  2. 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路

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

  3. [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)

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

  4. BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路

    原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...

  5. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)

    题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...

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

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

  7. bzoj1001狼抓兔子 对偶图优化

    bzoj1001狼抓兔子 对偶图优化 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路 菜鸡总是要填坑的! 很明显让你求网格图的最 ...

  8. BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA

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

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

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

  10. bzoj1001狼抓兔子

    1001: [BeiJing2006]狼抓兔子 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你 ...

随机推荐

  1. 在CentOS 7下编译安装Nginx+PHP+MySQL环境

    本文转载自:http://www.softeng.cn/?p=156,本文已获得作者授权,未经作者同意,不可转载. 1.前言 本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或 ...

  2. Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  3. TW实习日记:第七天

    今天早上,将项目的两个企业微信接口:登录和应用消息发送接口,做了最后的收尾工作,把目前我能解决的问题算是基本都解决了.早上还开了一个会,大意是组长封装了许多组件叫我们使用,在不断的使用中打磨组件的可用 ...

  4. 第二次ScrumMeeting博客

    第二次ScrumMeeting博客 本次会议于10月26日(四)22时整在3公寓725房间召开,持续15分钟. 与会人员:刘畅.方科栋.辛德泰.窦鑫泽.张安澜. 1. 每个人的工作(有Issue的内容 ...

  5. redis利用key计时与计数

    计时 Setex 命令为指定的 key 设置值及其过期时间.如果 key 已经存在, SETEX 命令将会替换旧的值 基本命令: redis 127.0.0.1:6379> SETEX KEY_ ...

  6. 2017年度网络安全服务企业TOP50

    何谓“大安全”? 近几年来,网络安全和信息安全领域不时出现引发社会各界关注的事件. 2014年,政府采购计划对WIN8说“不”,同年,中央网络安全和信息化领导小组成立,将网络安全上升到了国家战略高度, ...

  7. 【Alpha】阶段第四次Scrum Meeting

    [Alpha]阶段第四次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 获取课程评论接口 增加课程接口 赵智源 整合前端进行部署 整合前端进行部署 肖萌威 编写 ...

  8. 软工1816 · BETA 版冲刺前准备

    任务博客 组长博客 总的来讲Alpha阶段我们计划中的工作是如期完成的.不过由于这样那样的原因,前后端各个任务完成度不算非常高,距离完成一个真正好用.完美的软件还有所差距. 过去存在的问题 测试工作未 ...

  9. 第八次作业(课堂实战)- 项目UML设计

    本次作业博客 团队信息 队名:起床一起肝活队 原组长: 白晨曦(101) 原组员: 李麒 (123) 陈德斌(104) 何裕捷(214) 黄培鑫(217) 王焕仁(233) 林志华(128) 乐忠豪( ...

  10. HDU 5191 Building Blocks

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5191 bc(中文):http://bestcoder.hdu.edu.cn/contests ...