P4001 [ICPC-Beijing 2006]狼抓兔子
题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子
平面图
边与边只在顶点相交的图。
对偶图
对于一个平面图,都有其对应的对偶图。
- 平面图被划分出的每一个区域当作对偶图的一个点;
- 平面图中的每一条边两边的区域对应的点用边相连,特别地,若两边为同一区域则加一条回边(自环)。
这样构成的图即为原平面图的对偶图。
定理
平面图最小割 \(=\) 对偶图最短路。
#include <bits/stdc++.h>
#define pii pair<int, int>
#define X first
#define Y second
#define mp make_pair
#define ui unsigned int
using namespace std;
const int N = 2e6 + 6;
int n, m, s, t, d[N];
vector<pii> e[N];
priority_queue<pii> q;
bitset<N> v;
inline void add(int x, int y, int z) {
e[x].push_back(mp(y, z));
}
inline int get(int i, int j, int k) {
return 2 * (m - 1) * (i - 1) + 2 * (j - 1) + k;
}
inline void ins(int x, int y) {
int z;
scanf("%d", &z);
add(x, y, z);
add(y, x, z);
}
inline void dijkstra() {
memset(d, 0x3f, sizeof(d));
d[s] = 0;
q.push(mp(0, s));
while (q.size()) {
int x = q.top().Y;
if (x == t) return;
q.pop();
if (v[x]) continue;
v[x] = 1;
for (ui i = 0; i < e[x].size(); i++) {
int y = e[x][i].X, z = e[x][i].Y;
if (d[y] > d[x] + z) {
d[y] = d[x] + z;
q.push(mp(-d[y], y));
}
}
}
}
int main() {
cin >> n >> m;
t = 2 * (n - 1) * (m - 1) + 1;
for (int j = 1; j < m; j++) ins(get(1, j, 2), t);
for (int i = 2; i < n; i++)
for (int j = 1; j < m; j++)
ins(get(i - 1, j, 1), get(i, j, 2));
for (int j = 1; j < m; j++) ins(get(n - 1, j, 1), s);
for (int i = 1; i < n; i++) {
ins(get(i, 1, 1), s);
for (int j = 2; j < m; j++)
ins(get(i, j - 1, 2), get(i, j, 1));
ins(get(i, m - 1, 2), t);
}
for (int i = 1; i < n; i++)
for (int j = 1; j < m; j++)
ins(get(i, j, 1), get(i, j, 2));
dijkstra();
cout << d[t] << endl;
return 0;
}
P4001 [ICPC-Beijing 2006]狼抓兔子的更多相关文章
- 2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割)
2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割) https://www.luogu.com.cn/problem/P4001 题意: 把图分成两部分需要的最 ...
- 洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图
正解:网络流+对偶图 解题报告: 传送门! $umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$ 然后网格图的话显然是个平面图,又看到数据范围$n ...
- P4001-[ICPC-Beijing 2006]狼抓兔子【对偶图】
正题 题目链接:https://www.luogu.com.cn/problem/P4001 题目大意 给出一个类似于 的网格图,求起点到终点的最小割. 解题思路 最小割直接跑网络流,然后发现\(di ...
- 解题:BJOI 2006 狼抓兔子
题面 可以看出来是最小割,然后你就去求最大流了 这么大的范围就是让你用网络流卡的?咋想的啊=.=??? 建议还是老老实实用 平面图最小割等于其对偶图最短路 这个东西来做吧,虽然这个东西跑的也挺慢的,最 ...
- ICPC-Beijing 2006 狼抓兔子
题目描述 题解: 裸的最小割. 但是最大流跑不过去怎么办? 转变一下,既然最大流是一条左下<->右上的通路,我们可以把图划分为若干区域, 最后找左下到右上的最短路就行了. 代码: #inc ...
- [BZOJ 2006] 狼抓兔子
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1001 [算法] 最小割 [代码] #include<bits/stdc++.h ...
- BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路
问题描述 BZOJ1001 LG4001 题解 平面图最小割=对偶图最短路 假设起点和终点间有和其他边都不相交的一条虚边. 如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个 ...
- 【洛谷4001】 [ICPC-Beijing 2006]狼抓兔子(最小割)
传送门 洛谷 Solution 直接跑最小割板子就好了. 代码实现 #include<stdio.h> #include<stdlib.h> #include<strin ...
随机推荐
- Yii2的mongodb的聚合操作
最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下 $where['created_time'] = ['$gt' => "$start_date_str ...
- SQLServer 游标详解
一.用到的数据 CREATE TABLE [dbo].[XSB]( ) NOT NULL, ) NOT NULL, [性别] [bit] NULL, [出生时间] [date] NULL, ) NUL ...
- JSON与XML之间的转换
public class JsonTest { private final Logger cLogger = Logger.getLogger(getClass()); /** * XML转JSON ...
- 学习总结:CSS(一)定义方式、选择器、选择器权重
一.CSS的定义方式 1.内部样式:<style></style> 2.行间样式:<div style="width:100px;height:100px;&q ...
- react暴露webpack配置文件
在react中安装create-react-app脚手架新建项目,但是新建的项目中没有配置文件. webpack的配置文件webpack.base.conf.js隐藏在了node_modules文件夹 ...
- 【二】Spring Cloud 入门
官网 版本号: SpringCloud中文网:https://springcloud.cc SpringCloud中文社区:http://springcloud.cn 以下代码就是Maven父子工程, ...
- ****** 四十二 ******、软设笔记【软件知识产权保护】-Internet和Intranet基础
知识产权保护 著作权法及实施条例 <中华人民共和国著作权法>及其实施条例,明确了保护文学.艺术和科学作品作者的著作权,以及与其相关的权益. 依据改法,我国不仅对文字产品,口述作品,音乐.戏 ...
- 九、uboot 代码流程分析---relloc_code
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的 ...
- springboot使用jpa+mongodb时,xxxRepository不能Autowired的问题
springboot启动类: @SpringBootApplication public class MainApp { public static void main(String[] args) ...
- jdbc 日期处理问题
1.从结果集中取得日期部分 resultSet.getDate(); --2013-01-07 2.从结果集中取得时间部分 resultSet.getTime() --22:08:09 3.从结 ...