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

↑方法介绍
对于一个联通的平面图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. spring-boot支持websocket

    spring-boot本身对websocket提供了很好的支持,可以直接原生支持sockjs和stomp协议.百度搜了一些中文文档,虽然也能实现websocket,但是并没有直接使用spring-bo ...

  2. sublime出现卡顿的现象

    这几天,用sublime总是写一个代码就卡顿,卡卡卡,,,,要死的~ 最后,才发现是因为安装了一个插件:GitGutter插件,所以,小伙伴们请跟上我的节奏~~~~~ (1)Ctrl + Shift ...

  3. 【文件上传】jquery之ajaxfileupload异步上传插件

    来自:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html 由于项目需求,在处理文件上传时需要使用到文件的异步上传.这里使用J ...

  4. TypeScript在node项目中的实践

    TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...

  5. Fiddler 抓包工具总结(转)

    阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...

  6. 爬行百度标题&URL案例

    思路: 先将需要获取的匹配出,然后可以用"永真"(即while True:)来遍历使得URL可以一直自增变化(百度点击下一页URL的pn参数就增加10)每增加10就爬行一遍URL然 ...

  7. 做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table【转】

    做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table 浓缩版: 使用replicate_do_db和replicate_i ...

  8. Minimum Palindromic Factorization(最少回文串分割)

    Minimum Palindromic Factorization(最少回文串分割) 以下内容大部分(可以说除了关于回文树的部分)来自论文A Subquadratic Algorithm for Mi ...

  9. rds 与mysql 进行主从同步

    .rds上默认会有server-****,只需要配置从数据库: .从数据库的配置流程: .[mysqld] log-bin = mysql-bin-changelog #要和主库中的名字一样 rela ...

  10. C# String.Format用法和格式说明

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...