问题描述

BZOJ1001

LG4001


题解

平面图最小割=对偶图最短路

假设起点和终点间有和其他边都不相交的一条虚边。

如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个点。

对偶图中的每一个点,和它在平面图中每一个相邻的图形间有边,边权为原来分开它们的边的边权。

于是平面图最小割就是对偶图最短路。


\(\mathrm{Code}\)

#include<bits/stdc++.h>
using namespace std; const int maxn=2*1000*1000+7;
int n,m,S,T;
int Head[maxn],to[maxn*3],Next[maxn*3],tot=1,w[maxn*3]; void addedge(int x,int y,int z){
to[++tot]=y,Next[tot]=Head[x],Head[x]=tot,w[tot]=z;
} void add(int x,int y,int z){
addedge(x,y,z);addedge(y,x,z);
} void Init(void){
scanf("%d%d",&n,&m);
} int id(int x,int y,int type){
return (x-1)*(m-1)+y+(type-1)*(n-1)*(m-1);
} void Hori(void){
for(int i=1,x;i<m;i++){
scanf("%d",&x);
add(S,id(1,i,1),x);
}
for(int i=2,x;i<n;i++){
for(int j=1;j<m;j++){
scanf("%d",&x);
add(id(i-1,j,2),id(i,j,1),x);
}
}
for(int i=1,x;i<m;i++){
scanf("%d",&x);
add(id(n-1,i,2),T,x);
}
} void Longi(void){
for(int i=1,x;i<n;i++){
scanf("%d",&x);add(T,id(i,1,2),x);
for(int j=2;j<m;j++){
scanf("%d",&x);
add(id(i,j-1,1),id(i,j,2),x);
}
scanf("%d",&x);add(id(i,m-1,1),S,x);
}
} void Obli(void){
for(int i=1;i<n;i++){
for(int j=1,x;j<m;j++){
scanf("%d",&x);
add(id(i,j,1),id(i,j,2),x);
}
}
} void Graph_build(void){
S=(n-1)*(m-1)*2+1,T=S+1;
Hori();
Longi();
Obli();
} int dis[maxn];
bool vis[maxn];
#define pii(x,y) make_pair(x,y) void dijkstra(void){
memset(dis,0x3f,sizeof(dis));
priority_queue<pair<int,int> >q;
q.push(pii(0,S));dis[S]=0;
while(!q.empty()){
int x=(q.top()).second;q.pop();
if(vis[x]) continue;vis[x]=1;
if(x==T) return;
for(int i=Head[x];i;i=Next[i]){
int y=to[i];
if(dis[y]>dis[x]+w[i]){
dis[y]=dis[x]+w[i];
q.push(pii(-dis[y],y));
}
//if(y==T) return;
}
}
} void One(void){
int ans=0x3f3f3f3f,x;
for(int i=1;i<=n;i++) for(int j=1;j<m;j++){
scanf("%d",&x);ans=min(ans,x);
}
for(int i=1;i<n;i++) for(int j=1;j<=m;j++){
scanf("%d",&x);ans=min(ans,x);
}
printf("%d\n",ans);
} void Work(void){
if(n==1||m==1){
One();return;
}
Graph_build();
dijkstra();
printf("%d\n",dis[T]);
} int main(){
Init();
Work();
return 0;
}

BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路的更多相关文章

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

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

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

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

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

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

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

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

  5. [BZOJ1001][BeiJing2006]狼抓兔子(最小割转最短路|平面图转对偶图)

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

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

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

  7. BZOJ1001:狼抓兔子(最小割最大流+vector模板)

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

  8. BZOJ1001 BJOI2006狼抓兔子(最小割+最短路)

    显然答案就是最小割.直接跑dinic也能过,不过显得不太靠谱. 考虑更正确的做法.作为一个平面图,如果要把他割成两半,那么显然可以用一条曲线覆盖且仅覆盖所有割边.于是我们把空白区域看成点,隔开他们的边 ...

  9. 【Bzoj】1001狼抓兔子(平面图最小割转对偶图最短路)

    YEAH 题目链接 终于做对这道题啦    建图的艰辛难以言表- - 顺便说一句我队列转STL啦 狼抓兔子的地图符合平面图定义,于是将该图转成对偶图并求出对偶图的最短路即可. 这篇博客给了我极大的帮助 ...

随机推荐

  1. python3抓取淘宝评论内容

    好久没有写爬虫了,今天研究了下淘宝商品评论的内容. 一开始用最简单的方法,挂代理,加请求头,对网页请求,是抓不到数据的,在网上找了一些相关文章,也基本已经过时了,就是网站逻辑有改动,用旧的方法是抓不到 ...

  2. Hibernate 框架入门

    接着上一篇的 Hibernate 框架的了解,我们就继续学习 Hibernate 框架.这次就进入 Hibernate 框架的入门学习. 首先在学习 Hibernate 框架之前,我们要准备好我们需要 ...

  3. Android 项目优化(一):项目代码规范优化

    项目代码规范为主要包含:类,常量,变量,ID等命名规范:注释规范:分包规范:代码风格规范. 项目代码规范是软件开发过程中非常重要的优化环节. 目前的开发社区提供了很多的开发规范文档,阿里巴巴推出了&l ...

  4. python判断字典中key是否存在

    例:#生成一个字典d = {'title':'abc','age':18} if 'title' in d.keys(): print('存在')else: print('不存在') if 'titl ...

  5. How to Create Transportable Tablespaces Where the Source and Destination are ASM-Based (Doc ID 394798.1)

    How to Create Transportable Tablespaces Where the Source and Destination are ASM-Based (Doc ID 39479 ...

  6. SQL语句性能调整原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  7. 关于eclipse的maven项目Java Build Path中maven依赖报错问题

    场景描述: respository仓库位置变动过,代码注解等报错 解决方法: 选中项目,点击maven ->update Project即可.

  8. Git教程---由浅入深

    初学者很难找到一个由浅入深,学完后能立刻上手的Git教程 Git用户 V&Git专家 Git是一个工具,是目前世界上最先进的分布式版本控制系统(没有之一). 集中式的版本控制系统  V& ...

  9. 1+x 证书 Web 前端开发中级理论考试(试卷 8 )含答案

    1+x 证书 Web 前端开发中级理论考试(试卷 8 ) 官方QQ群 转载请注明来源:妙笔生花个人博客http://blog.zh66.club/index.php/archives/438/ 一.单 ...

  10. php中对于file的相关语句

    // 打开文件 fopen(); // 打开文件的方式 r 只读,r+ 读写方式打开 w 以写入的方式打开 w+ 以读写方式打开(以覆盖的形式写入) // a以写入的方式打开,文件不存在则创建 x创建 ...