1412: [ZJOI2009]狼和羊的故事
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 4017 Solved: 2037
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
2 2
1 1
Sample Output
数据范围
10%的数据 n,m≤3
30%的数据 n,m≤20
100%的数据 n,m≤100
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; #define get(i,j) ((i-1)*m+j)
const int INF=0x7f7f7f7f;
const int MAXN=;
const int xx[]={-,,,},yy[]={,,-,}; struct Edge
{
int to,w,next;
}E[MAXN];
int node=,head[MAXN],dis[MAXN],mp[][];
int s=,t=;
int n,m,ans; void insert(int u,int v,int w)
{
E[++node]=(Edge){v,w,head[u]};
head[u]=node;
E[++node]=(Edge){u,,head[v]};
head[v]=node;
} bool bfs()
{
memset(dis,-,sizeof(dis));
queue<int> Q;
Q.push(s);
dis[s]=;
while(!Q.empty())
{
int q=Q.front();Q.pop();
for(int i=head[q];i;i=E[i].next)
if(E[i].w&&dis[E[i].to]==-)
{
Q.push(E[i].to);
dis[E[i].to]=dis[q]+;
}
}
return dis[t]!=-;
} int dfs(int x,int flow)
{
if(x==t) return flow;
int w,used=;
for(int i=head[x];i;i=E[i].next)
if(E[i].w&&dis[E[i].to]==dis[x]+)
{
w=flow-used;
w=dfs(E[i].to,min(w,E[i].w));
E[i].w-=w;
E[i^].w+=w;
used+=w;
if(used==flow)return flow;
}
if(!used) dis[x]=-;
return used;
} void dinic()
{
while(bfs()) ans+=dfs(s,INF);
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&mp[i][j]);
if(mp[i][j]==) insert(s,get(i,j),INF);
else if(mp[i][j]==) insert(get(i,j),t,INF);
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int k=;k<;k++)
{
int x=i+xx[k],y=j+yy[k];
if(x<||x>n||y<||y>m) continue;
if(mp[i][j]!=||mp[x][y]!=)
insert(get(i,j),get(x,y),);
}
dinic();
printf("%d",ans);
return ;
}
1412: [ZJOI2009]狼和羊的故事的更多相关文章
- BZOJ 1412: [ZJOI2009]狼和羊的故事( 最小割 )
显然是最小割...把狼的领地连S, 羊的领地连T, 然后中间再连边, 跑最大流就OK了 -------------------------------------------------------- ...
- 1412. [ZJOI2009]狼和羊的故事【最小割】
Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...
- BZOJ 1412: [ZJOI2009]狼和羊的故事【网络流】
Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...
- bzoj 1412 [ZJOI2009]狼和羊的故事(最小割)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1412 [题意] 在一个n*m的格子中,将羊和狼隔开的最小代价. [思路] 最小割. 由 ...
- bzoj 1412: [ZJOI2009]狼和羊的故事
http://www.lydsy.com/JudgeOnline/problem.php?id=1412 超级源点连向所有的狼,超级汇点连向所有羊,流量为INF 相邻连边流量为1,最小割 #inclu ...
- BZOJ 1412 [ZJOI2009]狼和羊的故事 | 网络流
显然是个最小割嘛! 一开始我是这么建图的: 源点向狼连INF 羊向汇点连INF 每两个相邻格子间连双向边,边权为1 然后T成狗 后来我是这么建图的: 源点向狼连INF 羊向汇点连INF 狼和空地向相邻 ...
- 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][ ...
- P2598 [ZJOI2009]狼和羊的故事(网络流)
P2598 [ZJOI2009]狼和羊的故事 源点和所有狼连 $inf$ 的边 所有羊和汇点连 $inf$ 的边 所有点向四周连 $1$ 的边 这样所有狼和羊之间的边都被割掉了 统计最小割就好辣 #i ...
随机推荐
- 华东交通大学2017年ACM“双基”程序设计竞赛 1003
Problem Description 有两个球在长度为L的直线跑道上运动,两端为墙.0时刻小球a以1m/s的速度从起点向终点运动,t时刻小球b以相同的速度从终点向起点运动.问T时刻两球的距离.这里小 ...
- 用servlet获取IP等信息
Locale languageType=request.getLocale();//获取用户语言 String localIp=request.getLocalAddr();//获取本地ip int ...
- spring学习(四)spring的jdbcTemplate(增删改查封装)
Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...
- Seven-segment Display 贪心选择,快速判断能否有解
https://csacademy.com/contest/round-39/task/seven-segment-display/ 可以知道,只有1是无解 而且肯定是选出来的位数约小越好. 位数 = ...
- 【开源我写的富文本】打造全网最劲富文本技术选型之经典OOP仍是魅力硬核。
套路--先贴图 demo : http://www.vvui.net/editor/index.html gitee : https://gitee.com/kevin-huang/Bui-Edit ...
- arch搭建SVN服务器
一.安装 Install the package Install subversion from the official repositories. Create a repository Crea ...
- ZK请求处理
1. 事务请求转发-事务必须由Leader处理 所有非Leader的服务器收到来自客户端的事务请求,都会将客户端请求已REQUEST形式转发给Leader服务器进行处理 2. 事务处理 Proposa ...
- SpringMVC 返回实体对象时屏蔽某些属性
SpringMVC 可以直接已JSON的结果返回实体对象,可是返回时是所有属性与属性值都会一并返回, 怎样才能屏蔽某些属性?方法很简单,只要在实体对象类中要屏蔽的属性值上加 @JsonIgnore 注 ...
- a标签嵌套a标签效果的两种解决方案
<!-- a标签进行嵌套的时候 --> <a href="#outer">outerA <a href="#inner">i ...
- C++ int转string / string转int
c++ 最近标准添加了stringstream类,可以非常简单的对int 和 string 进行相互的转化 //int 转 string void int2str(const int& i, ...