题目

传送门: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]狼抓兔子(最小割 / 对偶图)的更多相关文章

  1. [bzoj 1001][Beijing2006]狼抓兔子 (最小割+对偶图+最短路)

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

  2. BZOJ 1001: [BeiJing2006]狼抓兔子 最小割

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓 ...

  3. bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...

  4. BZOJ.1001.[BeiJing2006]狼抓兔子(最小割ISAP)

    题目链接 为什么这题网络流这么快,海拔那题就那么慢.. //119968kb 544ms //路不是有向的,所以要建四条边..既然如此就直接将反向边的流量设为w了.(or MLE...) #inclu ...

  5. BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 19528  Solved: 4818[Submit][ ...

  6. 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路

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

  7. BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路

    原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...

  8. BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)

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

  9. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 23822  Solved: 6012[Submit][ ...

  10. BZOJ 1001: [BeiJing2006]狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 20029  Solved: 4957[Submit][ ...

随机推荐

  1. jquery设置控件位置的方法

    纯JS写法,代码如下: document.getElementById("child").style.left="800px";document.getElem ...

  2. openoffice在连接时有错误,无法连接上

    openoffice在连接时有错误,无法连接上 报如下错误: java.net.ConnectException: connection failed: socket,host=localhost,p ...

  3. 使用strdup 和 _strdup

    在重构旧的C代码里,使用了这个函数, pNew = new OBJECTDESC; sscanf(buf, "%x", &i); pNew->wObjectID = ...

  4. 【Java实战】DecimalFormat对数值格式化的舍入问题——RoundingMode

    转自http://blog.csdn.net/alanzyy/article/details/8465098  背景: 在对数值做一些计算的时候,往往我们需要控制计算结果的精度,所以会使用到Dec ...

  5. iOS-AFNetworking3.0上传大量(1000张)图片到服务器

    背景: 最近项目要做上传图片功能,图片必须是高清的,所以不让压缩,上传图片是大量的,比如几百张,这个如果是用afn,将图片直接for循环加入到formData里会出现一个问题,临时变量太多,导致内存紧 ...

  6. java数组实现简单的DVD管理

    package com; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; pub ...

  7. Objective-C-----协议protocol,代码块block,分类category

    概述 ObjC的语法主要基于smalltalk进行设计的,除了提供常规的面向对象特性外,还增加了很多其他特性,本文将重点介绍objective-C中一些常用的语法特性. 当然这些内容虽然和其他高级语言 ...

  8. git rebase 的作用

    git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态.要搞清楚这个东西,要先看看版本库状态切换的两种情况: 我们知道,在某个分支上,我们可以通过git ...

  9. Linux下nginx安装与配置

    部分Linux发布版的默认安装已经集成了nginx,查看方法ls /usr/local,若已有nginx文件夹说明已集成. nginx依赖库pcre与zlib,且pcre依赖于gcc与gcc-c++, ...

  10. BZOJ2160 拉拉队排练【Manacher】

    Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...