BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001
算法讨论:
1、可以用最大流做,最大流等于最小割。
2、可以把这个图转化其对偶图,然后在对偶图上跑最短路即可。
一个平面图的最小割等价于其对偶图从S到T的最短路。并不是所有的图都有对偶图,平面图也有一定的要求,自己可以百度一下。
代码(用BZOJ的数据测过了,但是在BZOJ上过不去。爆WA,并不知道是为什么,里面有个特判,并不知道有没有用处。)
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cstdio> using namespace std; const int N = + ;
const int inf = 0x3f3f3f3f; int n, cnt, m;
int head[N], que[N], dis[N];
bool vis[N]; struct Edge {
int from, to, dis, next;
}edges[N * ]; void add(int u, int v, int dis) {
++ cnt;
edges[cnt].from = u; edges[cnt].to = v;
edges[cnt].dis = dis; edges[cnt].next = head[u];
head[u] = cnt;
++ cnt;
edges[cnt].from = v; edges[cnt].to = u;
edges[cnt].dis = dis; edges[cnt].next = head[v];
head[v] = cnt;
} void spfa(int s, int t) {
int h = , tail = ;
for(int i = s; i <= t; ++ i) {
dis[i] = inf;
vis[i] = false;
}
vis[s] = true; dis[s] = ;
que[h] = s;
while(h <= tail) {
int x = que[h];
vis[x] = false;
for(int i = head[x]; i; i = edges[i].next) {
int v = edges[i].to;
if(dis[v] > dis[x] + edges[i].dis) {
dis[v] = dis[x] + edges[i].dis;
if(!vis[v]) {
que[++ tail] = v;
vis[v] = true;
}
}
}
++ h;
}
printf("%d\n", dis[t]);
} #define stone int main() {
#ifndef stone freopen("bjrabbit.in", "r", stdin);
freopen("bjrabbit.out", "w", stdout); #endif int tmp, s, t, x, mn = 0x3f3f3f3f;
scanf("%d%d", &n, &m);
s = ; t = (n - ) * (m - ) * + ;
tmp = (m - ) * ;
for(int i = ; i <= n; ++ i) {
for(int j = ; j < m; ++ j) {
scanf("%d", &x);
mn = min(x, mn);
if(i == ) {
add(j * + tmp * (i - ), t, x);
}
else if(i == n) {
add(s, j * + tmp * (i - ) - , x);
}
else {
add(j * + tmp * (i - ), j * + tmp * (i - ) - , x);
}
}
}
for(int i = ; i < n; ++ i) {
for(int j = ; j <= m; ++ j) {
scanf("%d", &x);
mn = min(x, mn);
if(j == ) {
add(s, tmp * (i - ) + , x);
}
else if(j == m) {
add(tmp * i, t, x);
}
else {
add(tmp * (i - ) + * (j - ), tmp * (i - ) + * (j - ) + , x);
}
}
}
for(int i = ; i < n; ++ i) {
for(int j = ; j < m; ++ j) {
scanf("%d", &x);
mn = min(mn, x);
add(tmp * (i - ) + j * , tmp * (i - ) + j * - , x);
}
}
if(n == || m == ) printf("%d\n", mn);
else spfa(s, t); #ifndef stone fclose(stdin); fclose(stdout); #endif return ;
}
1001
BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)的更多相关文章
- 2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割)
2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割) https://www.luogu.com.cn/problem/P4001 题意: 把图分成两部分需要的最 ...
- BZOJ 1001 狼抓兔子 平面图的最小割
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1001 题目大意: 见链接 思路: 求最小割,平面图的最小割等价于对偶图的最短路 直接建 ...
- BZOJ 1001 狼抓兔子 (最小割转化成最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 27715 Solved: 7134[Submit][ ...
- BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 14686 Solved: 3513 [Submit][ ...
- BZOJ1001:狼抓兔子(最小割最大流+vector模板)
1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨, ...
- [BZOJ1001][BeiJing2006]狼抓兔子(最小割转最短路|平面图转对偶图)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 31805 Solved: 8494[Submit][ ...
- BZOJ_2001_[BeiJing2006]狼抓兔子_最小割转对偶图
BZOJ_2001_[BeiJing2006]狼抓兔子 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 分析:思路同NOI2010海拔. ...
- BZOJ1001: [BeiJing2006]狼抓兔子(优化的dinic或转化对偶图求最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 30078 Solved: 7908[Submit][ ...
- bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...
随机推荐
- jQuery自学笔记(三):jQuery动画效果
jQuery隐藏和显示: 使用 hide( ) 和 show( ) 方法来隐藏和显示 HTML 元素: 语法: $(selector).hide(speed,callback); $(selector ...
- CSS的margin塌陷
一.两个div并列,上面div的margin-bottom和下面div的margin-top会塌陷,也就说会取上面div的margin-bottom和下面div的margin-top的最大值作为两个并 ...
- 近期Responsive web design项目经验分享-高分辨率图片处理篇
在高分辨率的情况下 商品的图片难免会失真 怎样才能让商品的图片在高分辨率的情况下 效果不失真 提供用户更好的体验呢 我发现了一个解决方案 不知道是不是你想要的 先上图片对比下效果 左侧是使用后 ...
- 使用pcs api往免费的百度网盘上传下载文件
百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog ...
- HTML&CSS基础学习笔记1.4-定义文档类型
Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档. HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面 ...
- python文件_读取
1.文件的读取和显示 方法1: f=open(r'G:\2.txt') print f.read() f.close() 方法2: try: t=open(r'G:\2.txt') print t.r ...
- 一个poi操作实现导出功能的类
public class ExportExcel<T> { public void exportExcel(Collection<T> dataset, OutputStrea ...
- 整型(int)转时间格式字符串及页面long型转时间格式字符串
1,如果是封装的整型的话需要在后台进行处理再返回页面 处理过程是这样的 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm ...
- BZOJ 2527 Meteors
http://www.lydsy.com/JudgeOnline/problem.php?id=2527 思路:整体二分 #include<cstdio> #include<cmat ...
- 开源的Owin 的身份验证支持 和跨域支持
http://identitymodel.codeplex.com/ https://identityserver.github.io/ Windows Identity Foundation 6.1 ...