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 ... 代码如下: ...
随机推荐
- 在同个类中non-const插入const来减少重复
class A { private: std::string a; public: A(std::string b) :a(b){} const char& operator[](int b) ...
- Mysql学习(慕课学习笔记8)插入、更新、删除记录
插入记录 Insert[]into] tb1_name[(col_name,…..)] 自动编号的字段,可以用values default Default 可以赋予默认值 INSERT USERS V ...
- Linux修改时间时区并在Tomcat中生效
Linux查看当前时间时区linux:~ # datelinux:~ # date –Rlinux:~ # zdump -v /usr/share/zoneinfo/Asia/Beijing ---- ...
- [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介
[Mugeda HTML5技术教程之2] Mugeda HTML5动画平台简介 摘要:Mugeda提供基于云的平台,供开发人员和设计人员快速的开发.发布和统计基于HTML5的,包含丰富动画和交互的移动 ...
- Leetcode_Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- usaco silver
大神们都在刷usaco,我也来水一水 1606: [Usaco2008 Dec]Hay For Sale 购买干草 裸背包 1607: [Usaco2008 Dec]Patting Heads 轻 ...
- IDEA 快捷键整理
1. IDEA内存优化 \IntelliJ IDEA 9\bin\idea.exe.vmoptions ----------------------------------------- -Xms6 ...
- BOT、BT、PPP形式介绍(1)
BOT.BT.PPP形式介绍 BOT1.什么是BOT BOT是英文Build-Operate-Transfer的缩写,即“建设-经营-转让”.实质上是基础设施投资.建设和经营的一种方式,以政府 ...
- Oracle百问百答(四)
Oracle百问百答(四) 31.怎样查看某用户下的表? select table_name from all_tables where owner=upper('jhemr'); 32.怎样查看某用 ...
- animation之translate、scale、alpha、rotate动画效果呈现
动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...