浅析最大最小定理在信息学竞赛中的应用---周东

↑方法介绍
对于一个联通的平面图G(满足欧拉公式) 在s和t间新连一条边e;
然后建立一个原图的对偶图G*,G*中每一个点对应原图中每一个面,每一条边对应分割面的每一条边;
那么对偶图G*中,以原图s和t间边e新划分出的面作为起点(s*),最外的面作为终点(t*);
那么从s*到t*的每一条路都是原图G的一个割;
下图来自上方标出百度文库网址的ppt;
然后用堆(优先队列)优化的迪杰斯特拉,复杂度 O((m+n)logn) n为点数,m为边数...
 
嗯存一个堆优化迪杰斯特拉的代码...很久以前那个没有标签的一通好找..
 #include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define pa pair<int,int>
int n,m,s,t;
struct node{
int y;
int next;
int v;
}e[];
int head[]={},tot=,dis[]={};
bool vis[]={};
priority_queue< pa, vector< pa >, greater< pa > >q;
inline void init(int x,int y,int v){
e[++tot].y=y;
e[tot].next=head[x];
e[tot].v=v;
head[x]=tot;
}
inline int ge(int x,int y,int k){//x行,y列,在斜线的左(1)右(2);返回格子的编号
return *(x-)*(m-)+*(y-)+k;
}
/*
事实上如果按照从上到下从左到右来编号,在输入时的块编号是有规律的;
不一定要像上面一样这样找格子编号;
*/
void doit(){
memset(dis,,sizeof(dis));
int x,y;
dis[s]=;
q.push(make_pair(,s));
while(!q.empty()){
x=q.top().second;
q.pop();
if(vis[x]){
continue;
}
vis[x]=;
for(int i=head[x];i;i=e[i].next){
y=e[i].y;
if(dis[y]>dis[x]+e[i].v){
dis[y]=dis[x]+e[i].v;
vis[y]=;
q.push(make_pair(dis[y],e[i].y));
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
int v;
t=(m-)*(n-)*+;
s=t-;
for(int i=;i<=n;i++){
for(int j=;j<m;j++){
scanf("%d",&v);
if(i==){
init(s,*j,v);
init(*j,s,v);
}else if(i==n){
init(ge(n-,j,),t,v);
init(t,ge(n-,j,),v);
}else{
init(ge(i-,j,),ge(i,j,),v);
init(ge(i,j,),ge(i-,j,),v);
}
}
}
for(int i=;i<n;i++){
for(int j=;j<=m;j++){
scanf("%d",&v);
if(j==){
init(t,ge(i,,),v);
init(ge(i,,),t,v);
}else if(j==m){
init(ge(i,m-,),s,v);
init(s,ge(i,m-,),v);
}else{
init(ge(i,j-,),ge(i,j,),v);
init(ge(i,j,),ge(i,j-,),v);
}
}
}
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%d",&v);
init(ge(i,j,),ge(i,j,),v);
init(ge(i,j,),ge(i,j,),v);
}
}
doit();
printf("%d\n",dis[t]);
return ;
}

BZOJ1001: [BeiJing2006]狼抓兔子 (最小割转最短路)的更多相关文章

  1. BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路

    原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...

  2. BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]

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

  3. bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  4. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  5. BZOJ1001[BeiJing2006]狼抓兔子——最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  6. 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  7. [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  8. bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...

  9. BZOJ 1001: [BeiJing2006]狼抓兔子 最小割

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓 ...

随机推荐

  1. Please move or remove them before you can merge

    在使用git pull时,经常会遇到报错: Please move or remove them before you can merge 这是因为本地有修改,与云端别人提交的修改冲突,又没有merg ...

  2. spring boot 加载原理

    spring boot quick start 在springBoot里面,很吸引的一个特征就是可以直接把应用打包成jar/war包形式.然后jar/war包可以直接运行的.不需要再配置web Ser ...

  3. Go语言 6 结构体、方法和接口

    文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 结构体(struct)是由一系列具有相同类型或不同类 ...

  4. MongoDB之python简单交互(三)

    python连接mongodb有多种orm,主流的有pymongo和mongoengine. pymongo 安装相关模块 pip install pymongo pymongo操作 主要对象 Mon ...

  5. Linux kernel学习-内存管理

    转自:https://zohead.com/archives/linux-kernel-learning-memory-management/ 本文同步自(如浏览不正常请点击跳转):https://z ...

  6. __inet_insert_ifa/__inet_del_ifa

    /* 添加ip地址 主地址添加到最后一个满足范围的主地址后面 从地址添加到整个列表后面 若列表中存在与插入地址在同一子网的地址,则 要求ip地址不同且范围相同,并且插入地址认为是从地址 */ stat ...

  7. (转)USB的描述符及各种描述符之间的依赖关系

    全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...

  8. makefile里PHONY的相关介绍

      Phony Targets PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字.有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能. 如果编写一个规则,并不产生目标文件 ...

  9. CSS3 object-fit 图像裁剪

    MDN定义 https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit 该 object-fit CSS 属性指定替换元素的内容应该如何适应 ...

  10. [转载]Windows服务编写原理及探讨(1)

    有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了. (一)服务 ...