[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1001

[算法]

最小割

[代码]

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
const long long inf = 1e18; struct edge
{
int to;
long long w;
int nxt;
} e[MAXN * MAXN * ]; int i,j,n,m,tot,S,T,x;
int head[MAXN * MAXN],depth[MAXN * MAXN];
long long ans,flow; template <typename T> inline void read(T &x)
{
long long f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar())
{
if (c == '-') f = -f;
}
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline int getid(int x,int y)
{
return (x - ) * m + y;
}
inline void addedge(int u,int v,long long w)
{
tot++;
e[tot] = (edge){v,w,head[u]};
head[u] = tot;
tot++;
e[tot] = (edge){u,w,head[v]};
head[v] = tot;
}
inline bool bfs()
{
int i,u,v,w,l,r;
static int q[MAXN * MAXN];
for (i = ; i <= n * m; i++) depth[i] = ;
q[l = r = ] = S;
depth[S] = ;
while (l <= r)
{
u = q[l];
l++;
for (i = head[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (!depth[v] && w)
{
depth[v] = depth[u] + ;
q[++r] = v;
if (v == T) return true;
}
}
}
return false;
}
inline long long dinic(int u,long long flow)
{
int i,v;
long long w,rest = flow,k;
if (u == T) return flow;
for (i = head[u]; i && rest; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (depth[v] == depth[u] + && w)
{
k = dinic(v,min(rest,w));
if (!k) depth[v] = ;
e[i].w -= k;
e[i ^ ].w += k;
rest -= k;
}
}
return flow - rest;
}
int main()
{ read(n); read(m);
tot = ;
for (i = ; i <= n; i++)
{
for (j = ; j < m; j++)
{
read(x);
addedge(getid(i,j),getid(i,j + ),x);
}
}
for (i = ; i < n; i++)
{
for (j = ; j <= m; j++)
{
read(x);
addedge(getid(i,j),getid(i + ,j),x);
}
}
for (i = ; i < n; i++)
{
for (j = ; j < m; j++)
{
read(x);
addedge(getid(i,j),getid(i + ,j + ),x);
}
}
ans = ;
S = ; T = n * m;
while (bfs())
{
while (flow = dinic(S,inf)) ans += flow;
}
printf("%lld\n",ans); return ; }

[BZOJ 2006] 狼抓兔子的更多相关文章

  1. P4001 [ICPC-Beijing 2006]狼抓兔子

    题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子 平面图 边与边只在顶点相交的图. 对偶图 对于一个平面图,都有其对应的对偶图. 平面图被划分出的每一个区域当作对偶图的一个点: 平 ...

  2. 2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割)

    2021.12.02 P4001 [ICPC-Beijing 2006]狼抓兔子(最小割) https://www.luogu.com.cn/problem/P4001 题意: 把图分成两部分需要的最 ...

  3. BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 29035  Solved: 7604 Descript ...

  4. BZOJ 1001 狼抓兔子 (最小割转化成最短路)

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

  5. bzoj 1001狼抓兔子(对偶图+最短路)最大流

    推荐文章:<浅析最大最小定理在信息学竞赛中的应用>--周冬 题目 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...

  6. BZOJ 1001 - 狼抓兔子 - [Dinic最大流][对偶图最短路]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 Description现在小朋友们最喜欢的"喜羊羊与灰太狼", ...

  7. 洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子

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

  8. BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然 ...

  9. 洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图

    正解:网络流+对偶图 解题报告: 传送门! $umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$ 然后网格图的话显然是个平面图,又看到数据范围$n ...

随机推荐

  1. CAD执行一个带参数的命令(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SendStringToExecute 执行一个带参数的命令.详细说明如下: 参数 说明 CString sCmaName 命令 ...

  2. RabbitMQ系列(五)--高级特性

    在上一篇文章讲解MQ消息可靠性投递和幂等性中有提到confirm机制的重要性,现在更相信的说明一下 一.Confirm机制 Confirm就是消息确认,当Producer发送消息,如果Broker收到 ...

  3. 04Oracle Database 登陆

    Oracle Database 登陆 EM Express Login https://localhost:5500/em/login cmd sqlplus SQL/PLUS system/code ...

  4. 如何创建TWaver 3D的轮廓选中效果

    在一般的游戏中,物体的选中效果会是这样: TWaver 3D中,物体的默认的选中效果一般都是一个方方正正的外框.在HTML5的Mono版本中,TWaver提供了轮廓线样式的选中效果. 通过如下代码把几 ...

  5. spring cloud (一):大话 Spring Cloud

    转自:http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html 研究了一段时间Spring Boot了准备向Spr ...

  6. 洛谷——P2236 [HNOI2002]彩票

    P2236 [HNOI2002]彩票 给你$m$个数,从中挑$n$个数,使得这$n$个数的倒数之和恰好等于$\frac{x}{y}$ 常见的剪纸思路: 如果当前的倒数和加上最小可能的倒数和$>$ ...

  7. [POJ1155]TELE(树形背包dp)

    看到这道题的第一眼我把题目看成了TLE 哦那不是重点 这道题是树形背包dp的经典例题 题目描述(大概的): 给你一棵树,每条边有一个cost,每个叶节点有一个earn 要求在earn的和大于等于cos ...

  8. oracle的分号、斜杠和commit

    ;分号表示一个语句的结束 //表示执行前面的一个代码块,例如begin/end,代码块后面必须跟/才能执行. commitcommit表示提交一个事务,例如insert,delete,update等, ...

  9. buf.readUIntBE()

    buf.readUIntBE(offset, byteLength[, noAssert]) buf.readUIntLE(offset, byteLength[, noAssert]) offset ...

  10. git帮助网址

    http://rogerdudler.github.io/git-guide/index.zh.html https://help.github.com/