BZOJ1001: [BeiJing2006]狼抓兔子 (最小割转最短路)

- #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]狼抓兔子 (最小割转最短路)的更多相关文章
- BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路
原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...
- BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- BZOJ1001[BeiJing2006]狼抓兔子——最小割
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...
- BZOJ 1001: [BeiJing2006]狼抓兔子 最小割
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓 ...
随机推荐
- CMDB概述(一)
浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...
- js布尔值转化
JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 Na ...
- 可能是是最全的Springboot基础视频分享,告别无视频可学
一头扎进SpringBoot视频教程 SpringBoot入门 2017年-张志君老师-SpringBoot(新增) 欢迎关注我的微信公众号:"Java面试通关手册" 回复关键字& ...
- oracle查看表中数据的大小
通过从视图 user_segments的字段 bytes中找到 select SUM(bytes)/1024/1024 from user_segments where segment_name='E ...
- Linux系统调用、新增系统调用方法【转】
转自:http://blog.chinaunix.net/uid-25374603-id-3401045.html 说明: 系统调用是内核和应用程序间的接口,应用程序要访问硬件设备和其他操作系统资源, ...
- 关于SQLite3 编译及交叉编译的一些问题
from : http://blog.sina.com.cn/s/blog_5f2e119b0101ibwn.html SQLite3 (http://www.sqlite.org)是一个非常强大的小 ...
- android的wake_lock介绍
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, 可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的, 超时的锁会在时间过去以后自动解锁. 如果没有锁了或者 ...
- 在Perl中使用Getopt::Long模块来接收用户命令行参数
我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...
- elk系列5之syslog的模块使用【转】
preface rsyslog是CentOs系统自带的的一个日志工具,那么我们就配置logstash来接受rsyslog的日志. logstash的syslog模块 linux-node2上操作log ...
- python selenium登陆网易云音乐
from selenium import webdriver import time driver=webdriver.Chrome() driver.get("http://music.1 ...