bzoj1001--最大流转最短路
http://www.lydsy.com/JudgeOnline/problem.php?id=1001
思路:这应该算是经典的最大流求最小割吧。不过题目中n,m<=1000,用最大流会TLE,所以要利用平面图的一些性质。
这里讲一下平面图的对偶图性质。
在平面图中,所有边将图分成了n个平面。我们将平面标号,对于原图中的每条边,在与之相邻的两个平面间连一条边,最后得到的图就是原图的对偶图。
对偶图有如下性质:
1、对偶图的边数与原图相等。
2、对偶图中的每个环对应原图中的割。
于是可以在原图中的s和t间再连一条边,得到对偶图,用spfa求一次最短路就是答案。
具体可以参考http://wenku.baidu.com/link?url=87F10nBWauMdSF-PaKHoG-3fZj0jFE63P6pHSeX6ZiguQqXOQxm41iLWW5IdZCp2MWFQ8JghamfeI68PtLqEv_JSWapGp5z415gNoYb031u
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
#define INF 1000000000
struct edge{
int p,to;
edge(int p=,int to=):p(p),to(to){};
};
vector<edge>g[];
queue<int>q;
int i,j,k,n,m,s,t,x,y,d[];
void spfa(){
for(int i=;i<=t;i++)d[i]=INF;
q.push();
while(!q.empty()){
int x=q.front();q.pop();
for(int i=;i<g[x].size();i++){
edge e=g[x][i];
if(d[x]+e.p<d[e.to]){
d[e.to]=d[x]+e.p;
q.push(e.to);
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
if(n==){
int minn=INF;
for(i=;i<m;i++){
scanf("%d",&x);
minn=min(minn,x);
}
printf("%d\n",minn);
return ;
}else if(m==){
int minn=INF;
for(i=;i<n;i++){
scanf("%d",&x);
minn=min(minn,x);
}
printf("%d\n",minn);
return ;
}
t=(n-)*(m-)*+;
for(i=;i<=n;i++)
for(j=;j<m;j++){
scanf("%d",&k);
x=(i-)*(m-)*+j*;
y=(i-)*(m-)*+j*+;
if(i==)x=;else if(i==n)y=t;
g[x].push_back(edge(k,y));
g[y].push_back(edge(k,x));
}
for(i=;i<n;i++)
for(j=;j<=m;j++){
scanf("%d",&k);
x=(i-)*(m-)*+j*-;
y=x+;
if(j==)x=t;else if(j==m)y=;
g[x].push_back(edge(k,y));
g[y].push_back(edge(k,x));
}
for(i=;i<n;i++)
for(j=;j<m;j++){
scanf("%d",&k);
x=(i-)*(m-)*+j*;
y=x+;
g[x].push_back(edge(k,y));
g[y].push_back(edge(k,x));
}
spfa();
printf("%d\n",d[t]);
return ;
}
bzoj1001--最大流转最短路的更多相关文章
- 【bzoj1001】【最短路】【对偶图】【最大流转最小割】狼抓兔子题解
[BZOJ1001]狼抓兔子 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 18872 Solved ...
- [bzoj1001][BJOI2006]狼抓兔子——最大流转最短路,平面图
题目描述: 给定一个平面图,求最小割. 题解: 本题是一道经典题. 周冬Orz的论文是很好的研究资料. 这道题点太多,所以直接跑dinic无疑会超时. 我们观察原图,发现原图是一个平面图. 什么是平面 ...
- BZOJ1001 狼抓兔子(网络流转最短路:对偶图)
题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...
- bzoj1001(对偶图最短路)
显然是个最大流问题. 边数达到了10^6级别,显然用dinic算法会TLE 对于一个平面图来说,当然用对偶图的最短路来求最小割(最大流) SPFA转移的时候注意判断边界情况 应该要开longlong才 ...
- 刷题向》图论》BZOJ1001 平面图最大流、平面图最小割、单源最短路(easy+)
坦白的说这是一道水题,但是因为是BZOJ上的1001,所以这道题有着特殊的意义. 关于最大流转最短路的博客链接如下:关于最大流转最短路两三事 这道题的图形很规矩,所以建边和建点还是很简单的. 题目如下 ...
- PencilWang博客目录
在这里有一坨目录,以后自己和别人看随笔都会方便很多 一 .刷题相关 1.BZOJ BZOJ1001(最大流,最短路)(EASY+) BZOJ1002(数学)(NORMAL+) BZOJ1003( ...
- 转自 Good morning 的几句精辟的话
1.志愿者招募 根据流量平衡方程来构图非常方便,而且简单易懂,以后可能成为做网络流的神法之一 简单记一下流量平衡方程构图法的步骤: a.列出需求不等式 b.通过设置松弛变量,将不等式变成等式 c.两两 ...
- BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路
原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...
- BZOJ1001 BJOI2006狼抓兔子(最小割+最短路)
显然答案就是最小割.直接跑dinic也能过,不过显得不太靠谱. 考虑更正确的做法.作为一个平面图,如果要把他割成两半,那么显然可以用一条曲线覆盖且仅覆盖所有割边.于是我们把空白区域看成点,隔开他们的边 ...
随机推荐
- 使用HttpClient的优解
新工作入职不满半周,目前仍然还在交接工作,适应环境当中,笔者不得不说看别人的源码实在是令人痛苦.所幸今天终于将大部分工作流畅地看了一遍,接下来就是熟悉框架技术的阶段了. 也正是在看源码的过程当中,有一 ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- css样式之background详解
background用法详解: 1.background-color 属性设置元素的背景颜色 可能的值 color_name 规定颜色值为颜色名称的背景颜色(比如 red) he ...
- Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder
Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- Ubuntu(Linux) + mono + xsp4 + nginx +asp.net MVC3 部署
折腾了一下,尝试用Linux,部署mvc3. 分别用过 centos 和 ubuntu ,用ubuntu是比较容易部署的. 操作步骤如下: 一.终端分别如下操作 sudo su ->输入密码 a ...
- 从零开始,DIY一个jQuery(3)
在前两章,为了方便调试,我们写了一个非常简单的 jQuery.fn.init 方法: jQuery.fn.init = function (selector, context, root) { if ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- 分布式理论之一:Paxos算法的通俗理解
维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...