BZOJ 1412 狼和羊的故事
首先,题目目的就是为了分割狼群和羊群,即建立超级源和超级汇求最小割从而转化成用网络流来处理。
如果没有空地,那么就是简单的二分图最大匹配,但是题中有空地的出现,所以需要在点与点之间建立双向边(不算后向弧),这样才能满足题意(我一开始挂到了这里)
理解透了还是很简单的
代码付上
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
#include <iostream>
using namespace std;
#define N 105
#define T 10005
#define S 0
int head[N*N],dep[N*N],cnt,n,m;
struct node
{
int to,next,val;
}e[N*N*N];
inline void add(int x,int y,int z)
{
e[cnt].to=y;
e[cnt].val=z;
e[cnt].next=head[x];
head[x]=cnt++;
return ;
}
inline void insert(int x,int y,int z)
{
add(x,y,z);
add(y,x,);
return ;
}
int bfs()
{
memset(dep,-,sizeof(dep));
queue <int >q;
q.push(S);
dep[S]=;
while(!q.empty())
{
int x=q.front();q.pop();
for(int i=head[x];i!=-;i=e[i].next)
{
int to1=e[i].to;
if(dep[to1]==-&&e[i].val)
{
q.push(to1);
dep[to1]=dep[x]+;
}
}
}
return dep[T]==-?:;
}
int dfs(int x,int maxf)
{
if(!maxf)return ;
if(x==T)return maxf;
int tflow=maxf,nowf;
for(int i=head[x];i!=-;i=e[i].next)
{
int to1=e[i].to;
if(dep[to1]==dep[x]+&&e[i].val&&dep[x]!=-)
{
nowf=dfs(to1,min(e[i].val,tflow));
if(!nowf)
{
dep[to1]=-;
continue;
}
tflow-=nowf;
e[i].val-=nowf,e[i^].val+=nowf;
if(!tflow)break;
}
}
dep[x]=-;
return maxf-tflow;
}
int map[N][N];
int dx[]={,,,-};
int dy[]={,,-,};
int main()
{
memset(head,-,sizeof(head));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
int x;
scanf("%d",&x);
map[i][j]=x;
if(x==)insert((i-)*m+j,T,<<);
if(x==)insert(S,(i-)*m+j,<<);
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
for(int k=;k<;k++)
{
int ty=dx[k]+i,tx=dy[k]+j;
if(ty==||ty==n+)continue;
if(tx==||tx==m+)continue;
int f=(i-)*m+j,t=(ty-)*m+tx;
insert(f,t,);
}
}
}
int ans=;
while(bfs())
{
ans+=dfs(S,<<);
}
printf("%d\n",ans);
return ;
}
BZOJ 1412 狼和羊的故事的更多相关文章
- [BZOJ 1412] 狼与羊的故事
Link: BZOJ 1412 传送门 Solution: 非常明显的最小割模型: 将所有点分成两个互不相邻的点集,且要求代价最小 建图: $<S,sheep,INF>$ $<wol ...
- [BZOJ 1412][ZJOI 2009] 狼和羊的故事
题目大意 有一个 (n times m) 的网格,每一个格子上是羊.狼.空地中的一种,羊和狼可以走上空地.现要在格子边上建立围栏,求把狼羊分离的最少围栏数. (1 leqslant n, ; m le ...
- BZOJ 1412: [ZJOI2009]狼和羊的故事( 最小割 )
显然是最小割...把狼的领地连S, 羊的领地连T, 然后中间再连边, 跑最大流就OK了 -------------------------------------------------------- ...
- bzoj1412: [ZJOI2009]狼和羊的故事
空地之间开始没有连然后一直WA...题意混乱...尴尬. #include<cstdio> #include<cstring> #include<iostream> ...
- BZOJ1412 [ZJOI2009]狼和羊的故事 【最小割】
1412: [ZJOI2009]狼和羊的故事 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3454 Solved: 1733 [Submit][ ...
- 【BZOJ1412】狼和羊的故事(网络流)
[BZOJ1412]狼和羊的故事(网络流) 题面 Description "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Orez听 ...
- P2598 [ZJOI2009]狼和羊的故事(网络流)
P2598 [ZJOI2009]狼和羊的故事 源点和所有狼连 $inf$ 的边 所有羊和汇点连 $inf$ 的边 所有点向四周连 $1$ 的边 这样所有狼和羊之间的边都被割掉了 统计最小割就好辣 #i ...
- 洛谷 P2598 [ZJOI2009]狼和羊的故事 解题报告
P2598 [ZJOI2009]狼和羊的故事 题目描述 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" \(Orez\)听到这首歌, ...
- 题解 P2598 【[ZJOI2009]狼和羊的故事】
P2598 [ZJOI2009]狼和羊的故事 题目描述 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Orez听到这首歌,心想:狼 ...
随机推荐
- js常用 弹出确认 取消对话框
<!DOCTYPE html><html><head> <title></title> <meta charset='utf-8'&g ...
- 万水千山ABP - 系统发布后迁移 CodeFirst 数据库[原创]
在项目开发的过程中,常会遇到项目发布后还变更数据库的情况.这时如何方便地进行数据库迁移呢 ? 下面直接列出操作的步骤: 1. 发布修改后的应用: 将最新版本的应用更新到目标机器中.更新的文件当然不包括 ...
- java安全——BASE64
这个主题主要是关于java安全的,应该来说算是个大杂烩吧,但是又不缺乏实用性,算是作为一个总结,用的时候可以作为参考. 1.使用BASE64加解密 在java加密技术中,BASE64算是一种最简单.最 ...
- Python HTTP库requests中文页面乱码解决方案!
http://www.cnblogs.com/bitpeng/p/4748872.html Python中文乱码,是一个很大的坑,自己不知道在这里遇到多少问题了.还好通过自己不断的总结,现在遇到乱码的 ...
- C#更改操作系统时间
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...
- Node笔记一
什么是javascript? --脚本语言 --运行在浏览器中 --一般用来做客户端页面的交互 javascript运行环境 --运行在浏览器内核中的JS引擎 浏览器这种javascript可以做什么 ...
- QUIC协议的分析,性能测试以及在QQ会员实践
WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...
- django优化和扩展(一)
mysql优化基础 进行django产品开发或上线之前,有必要了解一下mysql的基础知识,orm太过抽象,导致很多朋友对于mysql了解得太少,而且orm不像sqlalchemy那样可以跟mysql ...
- mysql学习 第二章 数据库的基本操作
3.1 创建数据库 MySQL安装好之后,首先需要创建数据库,这是使用MySQL各种功能的前提.本章将详细介绍数据的基本操作,主要内容包括:创建数据库.删除数据库.不同类型的数据存储引擎和存储引擎 ...
- Redis模糊查询
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 感谢该帖作者:WalkerAlone 原文链接:ht ...