原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html

题目传送门 - BZOJ1001

题意

  长成上面那样的网格图求最小割。

  $n,m\leq 1000$

题解

  网格图先转个对偶图,然后SPFA跑一发就完事了。

  或者你可以这样理解。

  

  你要从红色区域到蓝色区域连一条路径,比如橙色或者绿色。

  (其中绿色就是答案)

  然后话费就是经过的边权值和。

  然后你会发现消耗一条边的权值所达到的效果是沟通那条边所分割的两个区域。于是发现,以空白区域为节点,原图的边为边,最短路就是答案。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=2000005,M=1005;
struct Gragh{
int cnt,y[N*3],z[N*3],nxt[N*3],fst[N];
void clear(){
cnt=0;
memset(fst,0,sizeof fst);
}
void add(int a,int b,int c){
y[++cnt]=b,z[cnt]=c,nxt[cnt]=fst[a],fst[a]=cnt;
}
}g;
int n,m,nm,S,T;
void build(){
int x,a,b;
g.clear();
for (int i=1;i<=n;i++)
for (int j=1;j<m;j++){
scanf("%d",&x);
a=i==1?S:((i-2)*(m-1)+j);
b=i==n?T:((i-1)*(m-1)+j+nm);
g.add(a,b,x),g.add(b,a,x);
}
for (int i=1;i<n;i++)
for (int j=1;j<=m;j++){
scanf("%d",&x);
a=j==m?S:((i-1)*(m-1)+j);
b=j==1?T:((i-1)*(m-1)+j-1+nm);
g.add(a,b,x),g.add(b,a,x);
}
for (int i=1;i<n;i++)
for (int j=1;j<m;j++){
scanf("%d",&x);
a=(i-1)*(m-1)+j;
b=(i-1)*(m-1)+j+nm;
g.add(a,b,x),g.add(b,a,x);
}
}
int vis[N],d[N],q[N],head,tail;
int SPFA(int S,int T){
int n=T,qmod=n+1,x,y;
head=tail=0;
memset(d,63,sizeof d);
memset(vis,0,sizeof vis);
d[S]=0,vis[S]=1,q[++tail]=S;
while (head!=tail){
vis[x=q[head=(head+1)%qmod]]=0;
for (int i=g.fst[x];i;i=g.nxt[i]){
y=g.y[i];
if (d[y]>d[x]+g.z[i]){
d[y]=d[x]+g.z[i];
if (!vis[y])
vis[q[tail=(tail+1)%qmod]=y]=1;
}
}
}
return d[T];
}
int main(){
scanf("%d%d",&n,&m),nm=(n-1)*(m-1);
S=2*nm+1,T=S+1;
build();
printf("%d",SPFA(S,T));
return 0;
}

  

BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路的更多相关文章

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

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

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

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

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

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

  4. BZOJ1001: [BeiJing2006]狼抓兔子 (最小割转最短路)

    浅析最大最小定理在信息学竞赛中的应用---周东 ↑方法介绍 对于一个联通的平面图G(满足欧拉公式) 在s和t间新连一条边e; 然后建立一个原图的对偶图G*,G*中每一个点对应原图中每一个面,每一条边对 ...

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

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

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

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

  7. BZOJ1001[BeiJing2006]狼抓兔子——最小割

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

  8. bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...

  9. bzoj1001/luogu4001 狼抓兔子 (最小割/平面图最小割转对偶图最短路)

    平面图转对偶图:先在原图中加一个s->t的边,然后对每个面建一个点,对每条分隔两个面的边加一条连接这两个面对应点的边,边权等于原边权. 然后从刚才加的s->t分割出来的两面对应的两个点跑最 ...

随机推荐

  1. 前端----css的继承性和层叠性

    css有两大特性; 继承性和层叠性 继承性 继承:给父级设置一些属性,子级继承了父级的该属性, 这就是我们的css中的继承, 需要注意的是 有一些属性是可以继承下来的: color   ,  font ...

  2. Mysql 数据库安装与配置详解

    目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.概述 MySQL版本:5.7.17 下载地址:http://rj.baidu.com/soft/ ...

  3. 【原创】大叔经验分享(35)lzo格式支持

    建表语句 CREATE EXTERNAL TABLE `my_lzo_table`(`something` string)ROW FORMAT DELIMITED FIELDS TERMINATED ...

  4. 最新手机号码验证正则表达式(PHP版本)

    1 前言 手机号码是否合规,则需要校验,可以使用正则表达式. 2 代码 function checkPhoneNumberValidate($phone_number){ //@2017-11-25 ...

  5. jqGrid后台交互样例

    schoolManageGrid = $("#jqGrid").jqGrid({ url : ctx.path+"/api/school/querySchools&quo ...

  6. 4)协程一(yeild)

    一:什么协程 协程: coroutine/coro - 轻量级线程(一个线程) - 调度由用户控制 - 有独立的寄存器上下文和栈 - 切换时保存状态,回来时恢复 二:协程和多线程比较 协程: coro ...

  7. hive学习04-员工部门表综合案例

    知识点: 格式转换:cast(xxx as int) 按某列分桶某列排序,排序后打标机:例如:求每个地区工资最高的那个人的信息: ROW_NUMBER() OVER(PARTITION BY COLU ...

  8. 大数据mapreduce二分法ip定位之Python实现

    ip定位数据大约12M,采用-chacheFile 分发 文件来源https://pan.baidu.com/s/1J0pwTafHgt4T0k3vV_gC-A 格式大致格式如下: 0.0.0.0 0 ...

  9. 如何获取STM32 MCU的唯一ID

    前段时间由于应用需要对产品授权进行限制,所以研究了一下有关STM32 MCU的唯一ID的资料,并最终利用它实现了我们的目标. 1.基本描述 在STM32的全系列MCU中均有一个96位的唯一设备标识符. ...

  10. log4net使用的两种方式

    1.首先添加log4net.dll引用(可以使用  管理NuGet程序包添加引用,也可以下载下来手动去添加引用) 2.在app.config文件中配置 3.log4net使用的2终方式 log4net ...