网络流——增广路算法(dinic)模板 [BeiJing2006]狼抓兔子
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
struct data
{
int from,to,next,cup;
data(){from=-,to=-,next=-,cup=-;}
}e[];
int cnt=,head[];
int dis[];
bool vis[];
void add(int u,int v,int w)
{e[cnt].from=u,e[cnt].to=v,e[cnt].next=head[u],head[u]=cnt,e[cnt].cup=w;cnt++;}
int s,t;
bool bfs()
{
memset(dis,-,sizeof(dis));
int f=;
queue<int> q;
q.push(s);
dis[s]=;
while(!q.empty())
{
int n=q.front();
q.pop();
for(int i=head[n];i>=;i=e[i].next)
{
if(dis[e[i].to]==-&&e[i].cup>)
{
dis[e[i].to]=dis[n]+;
q.push(e[i].to);
}
}
}
return dis[t]!=-;
}
int dfs(int n,int a)
{ if(n==t||a==) return a;
int flow=,f;
for(int i=head[n];i>=;i=e[i].next)
{
if(dis[e[i].to]==dis[n]+&&e[i].cup>)
{
f=dfs(e[i].to,min(a,e[i].cup));
e[i].cup-=f;
e[i^].cup+=f;
flow+=f;
a-=f;
if(a==) break;
}
}
if(!flow) dis[n]=-;
return flow;
}
int dinic()
{
int sum=;
while(bfs()) sum+=dfs(s,);
return sum;
}
int main()
{
memset(head,-,sizeof(head));
int n,m;
scanf("%d%d",&n,&m);
int x;
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
{
scanf("%d",&x);
add(m*(i-)+j,m*(i-)+j+,x);
add(m*(i-)+j+,m*(i-)+j,x);
}
for(int i=;i<n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&x);
add(m*(i-)+j,m*(i)+j,x);
add(m*(i)+j,m*(i-)+j,x);
}
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
scanf("%d",&x);
add(m*(i-)+j,m*(i)+j+,x);
add(m*(i)+j+,m*(i-)+j,x);
}
s=,t=m*n;
printf("%d\n",dinic());
}
网络流——增广路算法(dinic)模板 [BeiJing2006]狼抓兔子的更多相关文章
- HDU3549 Flow Problem(网络流增广路算法)
题目链接. 分析: 网络流增广路算法模板题.http://www.cnblogs.com/tanhehe/p/3234248.html AC代码: #include <iostream> ...
- 【BZOJ】1001: [BeiJing2006]狼抓兔子 Dinic算法求解平面图对偶图-最小割
1001: [BeiJing2006]狼抓兔子 Description 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下 三种类型的道路 1:(x,y)<==>( ...
- BZOJ1001: [BeiJing2006]狼抓兔子(优化的dinic或转化对偶图求最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 30078 Solved: 7908[Submit][ ...
- BZOJ1001 BeiJing2006 狼抓兔子 【网络流-最小割】*
BZOJ1001 BeiJing2006 狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较 ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 23822 Solved: 6012[Submit][ ...
- 1001: [BeiJing2006]狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 12827 Solved: 3044[Submit][ ...
- BZOJ 1001 [BeiJing2006]狼抓兔子 (UVA 1376 Animal Run)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 24727 Solved: 6276[Submit][ ...
随机推荐
- 1106关于解决erp单个商品同步的问题
1.断点测试: 不断的利用echo "<pre>"; print_r();die;来测试问题出在哪? 先找问题出错点,再找出具体的细节. --------------- ...
- Java泛型的基本应用
一.泛型概述 jdk1.5版本以后出现的新特性,用于解决安全问题,是一个安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. 什么时 ...
- JAVA程序优化之字符串优化处理
字符串是软件开发中最为重要的对象之一.通常,字符串对象或其等价对象(如char数组),在内存中总是占据了最大的空间块.因此如何高效地处理字符串,必将是提高系统整体性能的关键所在. 1.String对象 ...
- css的!important规则对性能有影响吗
最近在做项目中发现很多CSS代码里面都使用!important去覆盖原有高优先级的样式.按照常理来说,越是灵活的东西,需要做的工作就会更多.所以想当然的认为像!important这样灵活.方便的规则如 ...
- Grunt Server:Fatal error: Port 35729 is already in use by another process.
提示35729端口被占用,使用lsof命令进行查看: y@y:yo-test$ lsof -i : COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ...
- PHP中的几个重要比较
1:定义常量 <?php define("TAX_RATE",0.08); echo TAX_RATE; //输出0.08 //2 (PHP 5.3) const TAX_R ...
- VS013的单元测试去哪里了
需要安装这个插件 http://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8cff-165b505a38d7
- 寻找第K小元素
要在一个序列里找出第K小元素,可以用排序算法,然后再找.可以证明,排序算法的上界为O(nlogn). 在这里,给出两种可以在线性时间内找出第K小元素的方法. 方法1: (1) 选定一个比较小的阈值(如 ...
- mirantis fuel
使用mirantis公司的openstack部署工具--fuel,迅速部署体验openStack云管理软件; 1,使用virtualbox虚拟化工具(此工具在此使用主要是为了简化新建虚机的网络规划,f ...
- SQL-MICK基础
/*Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据:2.where子句基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算: ...