博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ] 1001: [BeiJing2006]狼抓兔子
阅读量:6189 次
发布时间:2019-06-21

本文共 2050 字,大约阅读时间需要 6 分钟。

ST平面图最小割=ST平面图对偶图最短路

 

建图按边割开的边的边权建,特别地将S到T分成两个平面,设为SS和TT。

 

有一种情况是n=1或m=1,需要特殊处理。

注意到这种情况一定是一条链,边权为正,所以答案就是最远点了。

 

#include
#include
#include
#include
using namespace std;inline int rd(){ int ret=0,f=1;char c; while(c=getchar(),!isdigit(c))f=c=='-'?-1:1; while(isdigit(c))ret=ret*10+c-'0',c=getchar(); return ret*f;}const int MAXN=3000000;const int M=3000000;struct Edge{ int next,to,w;}e[M<<1];int ecnt,head[MAXN];inline void adds(int x,int y,int w){ e[++ecnt].next = head[x]; e[ecnt].to = y; e[ecnt].w = w; head[x] = ecnt;}inline void add(int x,int y,int w){ adds(x,y,w);adds(y,x,w);}struct Node{ int id,w; Node(int x=0,int y=0){id=x;w=y;} bool operator < (const Node &rhs) const { return w>rhs.w; }}top;priority_queue
Q;int dis[MAXN],vis[MAXN];void dij(int s){ memset(dis,0x3f,sizeof(dis)); Q.push(Node(s,0));dis[s]=0; while(!Q.empty()){ top=Q.top();Q.pop(); int mnid=top.id,mn=top.w; if(vis[mnid]) continue; if(mn!=dis[mnid])continue;vis[mnid]=1; for(int i=head[mnid];i;i=e[i].next){ int v=e[i].to; if(dis[v]>dis[mnid]+e[i].w){ dis[v]=dis[mnid]+e[i].w; Q.push(Node(v,dis[v])); } } }}int n,m,S,T;#define id(x,y) ((((x)-1)*(m-1<<1))+(y))int main(){ n=rd();m=rd(); S=n*m*2+1;T=n*m*2+2; int x; for(int i=1;i<=n;i++){ for(int j=1;j<=m-1;j++){ x=rd(); if(i==1){add(id(1,j<<1),T,x);continue;} if(i==n){add(id(n-1,(j<<1)-1),S,x);continue;} add(id(i-1,(j<<1)-1),id(i,j<<1),x); } } for(int i=1;i<=n-1;i++){ for(int j=1;j<=m;j++){ x=rd(); if(j==1){add(id(i,(j<<1)-1),S,x);continue;} if(j==m){add(id(i,j-1<<1),T,x);continue;} add(id(i,(j-1)<<1),id(i,(j<<1)-1),x); } } for(int i=1;i<=n-1;i++){ for(int j=1;j<=m-1;j++){ x=rd(); add(id(i,(j<<1)-1),id(i,j<<1),x); } } dij(S); if(n!=1&&m!=1) return cout<

 

转载于:https://www.cnblogs.com/ghostcai/p/9503890.html

你可能感兴趣的文章
1、虚拟机安装
查看>>
nginx下apk下载,ie9的问题
查看>>
exchange 管理员只有创建新用户无删除的权限设定方法
查看>>
mysql dba系统学习(18)mysql主从复制的实现
查看>>
java-第三章-从键盘输入3个整数,然后将输入的整数按照从小到大的顺序放在abc,并输出3个变量的值...
查看>>
Python的特色
查看>>
jquery UI 框架
查看>>
逻辑卷的拉伸及缩减
查看>>
安卓缓存图片
查看>>
sersync实现多台服务器实时同步文件
查看>>
Java基础---Java中运算符优先级(十六)
查看>>
如何让团队更高效
查看>>
Linux关机命令
查看>>
新浪微博注册用户超3亿 六成活跃者使用移动端
查看>>
算法(四)、时间复杂度、排序、查找
查看>>
用PowerShell收集服务器日检报告,并发邮件给管理员
查看>>
android笔记集one
查看>>
从Java Web 基础看SSH架构
查看>>
nginx1.8.0安装
查看>>
Failed to push selection: Read-only file system
查看>>