题面

Description

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

左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路
1:(x,y)<==>(x+1,y)
2:(x,y)<==>(x,y+1)
3:(x,y)<==>(x+1,y+1)
道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的. 左上角和右下角为兔子的两个窝,
开始时所有的兔子都聚集在左上角(1,1)的窝里,现在它们要跑到右下解(N,M)的窝中去,狼王开始伏击
这些兔子.当然为了保险起见,如果一条道路上最多通过的兔子数为K,狼王需要安排同样数量的K只狼,
才能完全封锁这条道路,你需要帮助狼王安排一个伏击方案,使得在将兔子一网打尽的前提下,参与的
狼的数量要最小。因为狼还要去找喜羊羊麻烦.

Input

第一行为N,M.表示网格的大小,N,M均小于等于1000.
接下来分三部分
第一部分共N行,每行M-1个数,表示横向道路的权值.
第二部分共N-1行,每行M个数,表示纵向道路的权值.
第三部分共N-1行,每行M-1个数,表示斜向道路的权值.
输入文件保证不超过10M

Output

输出一个整数,表示参与伏击的狼的最小数量.

Sample Input

3 4

5 6 4

4 3 1

7 5 3

5 6 7 8

8 7 6 5

5 5 5

6 6 6

Sample Output

14

题解

网络流模板题呀。。。
没了

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define MAXL 3000*3000
#define MAX 3000*1000
#define INF 1000000000
#define rg register
inline int read()
{rg int x=0,t=1;rg char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=-1,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return x*t;
}
struct Line
{int v,next,w;
}e[MAXL];
int h[MAX],cnt;
int ans,S,T,n,m;
inline void Add(int u,int v,int w)
{e[cnt]=(Line){v,h[u],w};h[u]=cnt++;e[cnt]=(Line){u,h[v],w};h[v]=cnt++;
}
int level[MAX];
int cur[MAX];
bool BFS()
{memset(level,0,sizeof(level));level[S]=1;queue<int> Q;Q.push(S);while(!Q.empty()){int u=Q.front();Q.pop();for(int i=h[u];i!=-1;i=e[i].next){int v=e[i].v;if(e[i].w&&!level[v])level[v]=level[u]+1,Q.push(v);}}return level[T];
}
int DFS(int u,int flow)
{if(flow==0||u==T)return flow;rg int ret=0;for(int i=h[u];i!=-1;i=e[i].next){rg int v=e[i].v;if(e[i].w&&level[v]==level[u]+1){rg int dd=DFS(v,min(flow,e[i].w));flow-=dd;ret+=dd;e[i].w-=dd;e[i^1].w+=dd;}}if(!ret)level[u]=0;return ret;
}
int Dinic()
{rg int ret=0;while(BFS()){//for(int i=S;i<=T;++i)cur[i]=h[i];ret+=DFS(S,INF);}return ret;
}
int main()
{memset(h,-1,sizeof(h));n=read();m=read();S=0;T=n*m+1;Add(S,1,INF);for(rg int i=0;i<n;++i)for(rg int j=1;j<m;++j){rg int w=read();Add(i*m+j,i*m+j+1,w);}for(rg int i=0;i<n-1;++i)for(rg int j=1;j<=m;++j){rg int w=read();Add(i*m+j,i*m+j+m,w);}for(rg int i=0;i<n-1;++i)for(rg int j=1;j<m;++j){rg int w=read();Add(i*m+j,i*m+j+m+1,w);}Add(n*m,T,INF);printf("%d\n",Dinic());return 0;
}

【BZOJ1001】狼抓兔子(网络流)相关推荐

  1. BZOJ1001 狼抓兔子 终于过了!

    时间来不及了,先贴代码吧!有时间再写. 好苦逼啊,WA了若干次,还有一次RE,一次TLE. 虽然主要运用的算法和资料都由师兄提供了.还是太弱了,太天真了. 首先,数据范围就WA了,RE了,TLE了. ...

  2. [bzoj1001]狼抓兔子

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

  3. bzoj1001狼抓兔子

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

  4. 【BJOI2006】bzoj1001 狼抓兔子

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

  5. BZOJ1001 狼抓兔子

    最小割 代码 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) m ...

  6. 【BZOJ1001】狼抓兔子

    [BZOJ1001]狼抓兔子 题面 bzoj 题解 懒得平面图转对偶图了,直接最小割板子加优化. #include <iostream> #include <cstdio> # ...

  7. 【BZOJ1001】狼抓兔子题解

    BZOJ1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还 ...

  8. 【bzoj1001】【狼抓兔子】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 12719 Solved: 3017 [Submit][ ...

  9. bzoj1001/BJOI2006 狼抓兔子

    1001: [BeiJing2006]狼抓兔子(传送门) 图论新知识..没学过.. 平面图最小割等于对偶图的最短路 详见课件:http://wenku.baidu.com/view/8f1fde586 ...

  10. P2030 - 【BJOI2006】狼抓兔子

    P2030 - [BJOI2006]狼抓兔子 Description 八中OJ上本题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001  现 ...

最新文章

  1. MySql批量插入时,如何不插入重复的数据
  2. 宁波Uber优步司机奖励政策(1月18日~1月24日)
  3. Qt警告提示:找不到“stddef.h”头文件,操蛋得很~~~
  4. 软件需求工程与UML建模——第九组第二周工作总结
  5. 引路蜂地图API:Drawing包定义
  6. 求变量的数据类型,typeid,bool,C和C++的不同,new和delete,C++中的枚举,inline和可变参数模板,auto和函数模板,宽字符
  7. 五种成功创业模式让你轻松赚到钱
  8. 6-2 链式表的按序号查找
  9. 惠而浦:使用Netty和Kafka的微服务
  10. python命令行tab补全_python命令行下按tab建补全的方法
  11. Eclipse的JavaWeb项目导入到IntelliJ IDEA 并且配置Tomcat
  12. 【杂题总结】洛谷-3959 宝藏
  13. matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值
  14. 听dalao讲课 7.27
  15. app软件开发现状及前景
  16. zookeeper和kafka的SASL认证以及生产实践
  17. vue项目对接钉钉企业内部H5微应用
  18. js中break关键字的用法。
  19. PADS新建多门元器件
  20. SpringBoot+Redis 实现一个微博热搜!

热门文章

  1. 中的实践 中兴_中兴5G切片获得高度肯定!
  2. 同贺!广西北部湾银行新一代系统群建设项目成功投产上线
  3. 怀念童年的萤火虫,我们的萤火虫去哪了?
  4. C#.net创建一个简单的消息队列程序(MessageQueue)
  5. Java实现阿里云发短信功能
  6. 微信小程序的影响到底有多大?来听听前公众号技术负责人怎么说
  7. 用数据库建模工具进行数据库建模
  8. ios各个版本的图标尺寸
  9. 新年第一天上班,一场小车祸引发的思考
  10. unity3d 加载iges_浅析几种三维模型格式导入Unity3D的途径