p2598 [ZJOI2009]狼和羊的故事
分析
起点向狼连边,羊向终点连边,边权均为inf
每个点向它四联通的点连边权萎1的边
跑最小割即可
代码
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<string>
- #include<algorithm>
- #include<cctype>
- #include<cmath>
- #include<cstdlib>
- #include<ctime>
- #include<queue>
- #include<vector>
- #include<set>
- #include<map>
- #include<stack>
- using namespace std;
- const int dx[] = {,-,,};
- const int dy[] = {,,,-};
- const int inf = 1e9+;
- int n,m,s,t,head[],to[],nxt[],w[],ano[],cnt,level[],cur[];
- inline void add(int x,int y,int z){
- nxt[++cnt]=head[x];
- head[x]=cnt;
- to[cnt]=y;
- w[cnt]=z;
- ano[cnt]=cnt+;
- nxt[++cnt]=head[y];
- head[y]=cnt;
- to[cnt]=x;
- w[cnt]=;
- ano[cnt]=cnt-;
- }
- inline int id(int x,int y){return (x-)*m+y;}
- inline void go(int x,int y){
- for(int i=;i<;i++){
- if(dx[i]+x<=||dx[i]+x>n||dy[i]+y<=||dy[i]+y>m)continue;
- add(id(x,y),id(dx[i]+x,dy[i]+y),);
- }
- }
- inline bool bfs(){
- memset(level,-,sizeof(level));
- queue<int>q;
- level[s]=;
- q.push(s);
- while(!q.empty()){
- int x=q.front();
- q.pop();
- for(int i=head[x];i;i=nxt[i])
- if(level[to[i]]==-&&w[i]){
- level[to[i]]=level[x]+;
- if(to[i]==t)return ;
- q.push(to[i]);
- }
- }
- return ;
- }
- inline int dfs(int x,int flow){
- if(x==t||!flow)return flow;
- int res=;
- cur[x]=head[x];
- for(int i=cur[x];i;i=nxt[i]){
- cur[x]=i;
- if(level[to[i]]==level[x]+&&w[i]){
- int f=dfs(to[i],min(w[i],flow-res));
- w[i]-=f;
- res+=f;
- w[ano[i]]+=f;
- }
- }
- if(!res)level[x]=-;
- return res;
- }
- int main(){
- int i,j,k,Ans=;
- scanf("%d%d",&n,&m);
- s=n*m+,t=s+;
- for(i=;i<=n;i++)
- for(j=;j<=m;j++){
- scanf("%d",&k);
- if(k==)add(s,id(i,j),inf);
- else if(k==)add(id(i,j),t,inf);
- go(i,j);
- }
- while(bfs())while(int a=dfs(s,inf))Ans+=a;
- cout<<Ans;
- return ;
- }
p2598 [ZJOI2009]狼和羊的故事的更多相关文章
- P2598 [ZJOI2009]狼和羊的故事(网络流)
P2598 [ZJOI2009]狼和羊的故事 源点和所有狼连 $inf$ 的边 所有羊和汇点连 $inf$ 的边 所有点向四周连 $1$ 的边 这样所有狼和羊之间的边都被割掉了 统计最小割就好辣 #i ...
- 洛谷 P2598 [ZJOI2009]狼和羊的故事 解题报告
P2598 [ZJOI2009]狼和羊的故事 题目描述 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" \(Orez\)听到这首歌, ...
- P2598 [ZJOI2009]狼和羊的故事(最小割)
P2598 [ZJOI2009]狼和羊的故事 题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么 ...
- P2598 [ZJOI2009]狼和羊的故事(最小割)
P2598 [ZJOI2009]狼和羊的故事 说真的,要多练练网络流的题了,这么简单的网络流就看不出来... 题目要求我们要求将狼和羊分开,也就是最小割,(等等什么逻辑...头大....) 我们这样想 ...
- 洛谷P2598 [ZJOI2009]狼和羊的故事 题解
题目链接: https://www.luogu.org/problemnew/show/P2598 分析: 我们知道此题的目的是将狼和羊分割开,很容易想到狼在S,羊在T中. 首先,我们可以在狼,羊,空 ...
- 洛谷 P2598 [ZJOI2009]狼和羊的故事
题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...
- 洛谷P2598 [ZJOI2009]狼和羊的故事
题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...
- 洛谷$P2598\ [ZJOI2009]$狼和羊的故事 网络流
正解:网络流 解题报告: 传送门! 昂显然考虑最小割鸭$QwQ$,就考虑说每个土地要么属于羊要么属于狼,然后如果一条边上是栅栏一定是相邻两边所属不同. 所以考虑给所有羊向$S$连$inf$,所有狼向$ ...
- 题解 P2598 【[ZJOI2009]狼和羊的故事】
P2598 [ZJOI2009]狼和羊的故事 题目描述 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Orez听到这首歌,心想:狼 ...
随机推荐
- 监控mysql状态并发送Email
*/10 * * * * /shell/mysql_status.sh > /dev/null 2>&1 #!/bin/bash port55=`/usr/sbin/lsof - ...
- 阿里云视频点播 php开发
先购买开通阿里云的<视频点播>服务,视频点播 可以购买套餐 ,我在项目中使用的是299套餐 开发前在<用户信息管理>生成Access Key Secret,开发密钥使用 阿里云 ...
- 微软Azure平台 cloud service动态申请证书并绑定证书碰到的坑
我们有一个saas平台 部分在azure的cloud service 使用lets encrypt来申请证书.每一个商家申请域名之后就需要通过Lets encrypt来得到证书并绑定证书. 主要碰到的 ...
- ORACLE用户的加锁、解锁
在DBA的日常工作中,经常遇到为Oracle用户解锁的操作:这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作.下面是具体的过程: 默认的scott用户是 ...
- bfs判断子图是否连通
int judge() { int v[13] = { 0 }; queue<int> myq; myq.push(ans[0]); v[ans[0]] = 1; while (!myq. ...
- 算法题:求一个序列S中所有包含T的子序列(distinct sub sequence)
题: 给定一个序列S以及它的一个子序列T,求S的所有包含T的子序列.例: S = [1, 2, 3, 2, 4] T = [1, 2, 4] 则S的所有包含T的子序列为: [1, 2, 3, 2, 4 ...
- ESXI5-WIN2008R2安装域控以及额外域笔记
每次安装域控都要找教程,每次都没法一次性搞定.写个笔记吧...主要是给自己看的.写的比较含糊.不清楚的可以直接QQ本人. 1.安装WIN2008R2,192.168.188.10 2.上载SLICET ...
- 十五.jQuery源码解析之Sizzle总体结构.htm
Sizzle是一款纯javascript实现的css选择器引擎,它具有完全独立,无库依赖;小;易于扩展和兼容性好等特点. W3C Selectors API规范定义了方法querySelector() ...
- Druid.io系列(一):简介
原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52955676 Druid.io(以下简称Druid)是面向海量数据的.用于实时查询与 ...
- 谷歌强制厂商升级KitKat 仍无法改善安卓碎片化
据一份泄露的内部文档显示,谷歌计划推出新的Android版本及设备审批条例,限制硬件制造商推出Android 4.4 KitKat以下的旧版本硬件,来改变平台碎片化现象.如果厂商一意孤行,继续推出搭载 ...