【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][ ...
随机推荐
- jquery设置控件位置的方法
纯JS写法,代码如下: document.getElementById("child").style.left="800px";document.getElem ...
- openoffice在连接时有错误,无法连接上
openoffice在连接时有错误,无法连接上 报如下错误: java.net.ConnectException: connection failed: socket,host=localhost,p ...
- 使用strdup 和 _strdup
在重构旧的C代码里,使用了这个函数, pNew = new OBJECTDESC; sscanf(buf, "%x", &i); pNew->wObjectID = ...
- 【Java实战】DecimalFormat对数值格式化的舍入问题——RoundingMode
转自http://blog.csdn.net/alanzyy/article/details/8465098 背景: 在对数值做一些计算的时候,往往我们需要控制计算结果的精度,所以会使用到Dec ...
- iOS-AFNetworking3.0上传大量(1000张)图片到服务器
背景: 最近项目要做上传图片功能,图片必须是高清的,所以不让压缩,上传图片是大量的,比如几百张,这个如果是用afn,将图片直接for循环加入到formData里会出现一个问题,临时变量太多,导致内存紧 ...
- java数组实现简单的DVD管理
package com; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; pub ...
- Objective-C-----协议protocol,代码块block,分类category
概述 ObjC的语法主要基于smalltalk进行设计的,除了提供常规的面向对象特性外,还增加了很多其他特性,本文将重点介绍objective-C中一些常用的语法特性. 当然这些内容虽然和其他高级语言 ...
- git rebase 的作用
git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态.要搞清楚这个东西,要先看看版本库状态切换的两种情况: 我们知道,在某个分支上,我们可以通过git ...
- Linux下nginx安装与配置
部分Linux发布版的默认安装已经集成了nginx,查看方法ls /usr/local,若已有nginx文件夹说明已集成. nginx依赖库pcre与zlib,且pcre依赖于gcc与gcc-c++, ...
- BZOJ2160 拉拉队排练【Manacher】
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...