【BZOJ】1001: [BeiJing2006]狼抓兔子(最小割 / 对偶图)
题目
传送门:QWQ
分析
显然答案是最小割。
然后dinic卡一卡过去了。
其实是懒得写转对偶图:正解
(dinic原来写的是vector,后来改的比较鬼畜
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+, INF=2e9;
struct Edge{
int from,to,cap,flow;
};
int siz=;
Edge edges[*maxn]; int G[maxn][];
int que[maxn];
int d[maxn], vis[maxn], cur[maxn];
int s,t;
void Addedge(int a,int b,int c){
// edges.push_back((Edge){a,b,c,0}); edges.push_back((Edge){b,a,c,0});
// int m=edges.size()-1; G[a].push_back(m-1); G[b].push_back(m);
edges[siz++]=(Edge){a,b,c,}; edges[siz++]=(Edge){b,a,c,};
G[a][++G[a][]]=siz-; G[b][++G[b][]]=siz-;
}
bool BFS(){
memset(vis,,sizeof(vis)); memset(que,,sizeof(que));
que[]=s;
d[s]=; vis[s]=;
int l=,r=;
while(l<r){
int x=que[l]; l++;
for(int i=;i<=G[x][];i++){
Edge v=edges[G[x][i]];
if(!vis[v.to] && v.flow<v.cap){
vis[v.to]=; d[v.to]=d[x]+;
que[r++]=v.to;
}
}
}
return vis[t];
}
int DFS(int x, int a){
if(x==t || a==) return a;
int flow=, f;
for(int& i=cur[x]; i<=G[x][]; i++){
Edge& v=edges[G[x][i]];
if(d[x]+==d[v.to] && (f=DFS(v.to,min(a,v.cap-v.flow)))){
v.flow+=f; edges[G[x][i]^].flow-=f;
if(!f) {d[v.to]=-;continue;}
flow+=f; a-=f;
if(a==) break;
}
}
return flow;
}
int Maxflow()
{
int flow=;
while(BFS()){
for(int i=;i<maxn;i++) cur[i]=;
flow+=DFS(s,INF);
}
return flow;
}
inline int getint()
{
int w=,q=;
char c=getchar();
while((c<'' || c>'') && c!='-') c=getchar();
if (c=='-') q=, c=getchar();
while (c>='' && c<='') w=w*+c-'', c=getchar();
return q ? -w : w;
} int main()
{
int n,m; scanf("%d%d",&n,&m);
if(n==&&m==){ puts(""); return ;
}
s=; t=n*m;
int capp;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
capp=getint();
Addedge(i*m+j,i*m+j+,capp);
// printf("*** %d %d %d\n",i*m+j,i*m+j+1,capp);
}
}
for(int i=;i<n;i++){
for(int j=;j<=m;j++){
capp=getint();
Addedge(m*(i-)+j,i*m+j,capp);
// printf("*** %d %d %d\n",m*(i-1)+j,i*m+j,capp);
}
}
for(int i=;i<n;i++){
for(int j=;j<m;j++){
capp=getint();
Addedge(m*(i-)+j,i*m+j+,capp);
// printf("*** %d %d %d\n",m*(i-1)+j,i*m+j+1,capp);
}
}
printf("%d\n",Maxflow());
return ;
}
【BZOJ】1001: [BeiJing2006]狼抓兔子(最小割 / 对偶图)的更多相关文章
- [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...
- BZOJ 1001: [BeiJing2006]狼抓兔子 最小割
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓 ...
- bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...
- BZOJ.1001.[BeiJing2006]狼抓兔子(最小割ISAP)
题目链接 为什么这题网络流这么快,海拔那题就那么慢.. //119968kb 544ms //路不是有向的,所以要建四条边..既然如此就直接将反向边的流量设为w了.(or MLE...) #inclu ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路
原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...
- BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 23822 Solved: 6012[Submit][ ...
- BZOJ 1001: [BeiJing2006]狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 20029 Solved: 4957[Submit][ ...
随机推荐
- PHP use
PHP 7 use 语句 PHP 7 新特性 PHP 7 可以使用一个 use 从同一个 namespace 中导入类.函数和常量: 实例 实例 // PHP 7 之前版本需要使用多次 use us ...
- matlab load
参考文献:http://jingyan.baidu.com/article/fec4bce2257963f2618d8bfa.html 对应save,load 命令更加简单. load的方式有三种: ...
- js之留言字数限制
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- .NET中查看一个强命名程序集(*****.dll)的PublicKeyToken的方法
使用命令行工具SDK Command Prompt,键入:SN -T C:\*****.dll (dll文件所在的路径) 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有 ...
- Nginx——Nginx概述(一)
1.什么是Nginx? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上n ...
- mint-ui框架的使用
1.安装mint-ui框架: cnpm install mint-ui --save-dev 在main.js入口文件中引入并命名用mint-ui框架 import Vue from 'vue' im ...
- nginx 获取请求头,URL参数
获取url参数 在 ngx_lua 中访问 Nginx 内置变量 ngx.var.arg_PARAMETER 即可获得GET参数PARAMETER的内容. 在 nginx配置中,通过$arg_PARA ...
- coredns 编译模式添加插件
备注: coredns 默认已经安装了一些插件,比如大家用的多的kubernetes etcd ... 但是我们可以自己编译插件,构建我们自己的 coredns 版本,方便集成使用 1. 项目结 ...
- oracle之 db file sequential read等待事件优化思想
为什么db file sequential read事件在full table scan操作中显现,为什么在多块读中为什么会有单块读存在 ? extent的大小 :当扩展区中的最后一组块仅是1个块,o ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门(转)
转自:http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html 喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog, ...