【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][ ...
随机推荐
- Android SDK无法更新解决办法
一.设置SDK代理 启动Android SDK Manager,选择菜单 Tools ->Options -> 代理地址: mirrors.opencas.cn 代理端口: 80 如下图: ...
- gradle-wrapper.properties中各属性的含义
gradle-wrapper.properties中各属性的含义 1. gradle-wrapper.properties 每一个用gradle编译的工程,都会有一个gradle\wrapper目录. ...
- Leetcode 429. N-ary Tree Level Order Traversal
bfs class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: q,ans=[root],[] while ...
- MongoDB 安装、运行、使用、数据恢复
1.安装MongoDB社区版 # . 导入MongoDB public GPG Key sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com ...
- 原 the app referencesnon-public selectors in payload
摘要 当我们上传验证的时候,出现了the app referencesnon-public selectors in payload/项目名.app/项目:字符 的警告的解决办法 当我们上传验证的时候 ...
- (转)如何转载CSDN的文章
前言 对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间 ...
- getServletContext()方法详解
javax.servlet.ServletContext接口 一个servlet上下文是servlet引擎提供用来服务于Web应用的接口.Servlet上下文具有名字(它属于Web应用的名字)唯一映射 ...
- BZOJ1257 CQOI2007 余数之和 【数分块】
BZOJ1257 CQOI2007 余数之和 Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值 其中 ...
- js去重复和取重复数据
js数组中取重复数据的方法: 方法一:去重复数据 <script> Array.prototype.distinct=function(){ var a=[],b=[]; for(var ...
- 微软 Windows 系统检测网络连通性(用于显示感叹号)竟然是通过访问一个特殊网址来实现的
一次我走到了弱网环境中,意外地发现浏览器打开了 http://www.msftconnecttest.com/redirect 网址,随后右下角的网络图标出现了一枚“感叹号”. 吹水的推断 从直观 ...