【BZOJ 1412】[ZJOI2009]狼和羊的故事
Description
Input
Output
Sample Input
2 2
1 1
Sample Output
数据范围
10%的数据 n,m≤3
30%的数据 n,m≤20
100%的数据 n,m≤100
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<iostream>
- using namespace std;
- const int inf=,N=;
- int fx[]={,,,-},fy[]={,-,,};
- struct ee{int to,next,f;}e[];
- int head[N*N],q[N**N],dis[N*N],a[N][N];
- int S,T,n,m,cnt=,ans,w;
- void ins(int u,int v,int f){
- e[++cnt].to=v;e[cnt].f=f;e[cnt].next=head[u];head[u]=cnt;
- e[++cnt].to=u;e[cnt].f=;e[cnt].next=head[v];head[v]=cnt;
- }
- bool bfs(){
- for (int i=;i<=T;i++) dis[i]=inf;
- int h=,t=,now;
- q[]=S;dis[S]=;
- while(h!=t){
- now=q[++h];
- for (int i=head[now];i;i=e[i].next){
- int v=e[i].to;
- if (e[i].f&&dis[now]+<dis[v]){
- dis[v]=dis[now]+;
- if (v==T)return ;
- q[++t]=v;
- }
- }
- }
- if (dis[T]==inf) return ; return ;
- }
- int dinic(int now,int f){
- if (now==T) return f;
- int rest=f;
- for (int i=head[now];i;i=e[i].next){
- int v=e[i].to;
- if (e[i].f&&dis[v]==dis[now]+&&rest){
- int t=dinic(v,min(rest,e[i].f));
- if (!t) dis[v]=;
- e[i].f-=t;
- e[i^].f+=t;
- rest-=t;
- //if(t) printf("%d %d %d\n",now,v,e[i].f);
- }
- }
- return f-rest;
- }
- int main(){
- scanf("%d%d",&n,&m);
- S=,T=n*m+;
- for(int i=;i<=n;i++)
- for(int j=;j<=m;j++)
- scanf("%d",&a[i][j]);
- for(int i=;i<=n;i++) for(int j=;j<=m;j++)
- if(a[i][j]==) ins(S,(i-)*m+j,inf);
- for(int i=;i<=n;i++) for(int j=;j<=m;j++)
- if(a[i][j]==) ins((i-)*m+j,T,inf);
- for(int i=;i<=n;i++) for(int j=;j<=m;j++){
- if(a[i][j]==) {
- for(int ii=;ii<;ii++) {
- int nx=i+fx[ii],ny=j+fy[ii];
- if(nx>n||nx<||ny>m||ny<||a[nx][ny]==) continue;
- ins((i-)*m+j,(nx-)*m+ny,);
- }
- }
- else if(a[i][j]==){
- for(int ii=;ii<;ii++) {
- int nx=i+fx[ii],ny=j+fy[ii];
- if(nx>n||nx<||ny>m||ny<||a[nx][ny]==) continue;
- ins((i-)*m+j,(nx-)*m+ny,);
- }
- }
- }
- while(bfs())
- ans+=dinic(S,inf);
- printf("%d",ans);
- }
【BZOJ 1412】[ZJOI2009]狼和羊的故事的更多相关文章
- BZOJ 1412: [ZJOI2009]狼和羊的故事( 最小割 )
显然是最小割...把狼的领地连S, 羊的领地连T, 然后中间再连边, 跑最大流就OK了 -------------------------------------------------------- ...
- 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 狼和空地向相邻 ...
- 1412. [ZJOI2009]狼和羊的故事【最小割】
Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...
- 1412: [ZJOI2009]狼和羊的故事
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4017 Solved: 2037[Submit][Status][Discuss] Descript ...
- 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 ...
随机推荐
- 怎么在html页面和js里判断是否是IE浏览器
HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...
- [改善Java代码]断言绝对不是鸡肋
建议19: 断言绝对不是鸡肋 在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当的输入或错误的环境而产生逻辑异常,断言在很多语言中都存在,C.C++.Python都有 ...
- MSP430常见问题之通信类
Q1: 430 串口中,有个R/D 控制线,在接收上位机的数据,但本身的数据有无发送完毕不知道啊,什么时候才可置低R/d 位来接收数据啊?好像430 没有发送完中断标志A1:字节主动发送,一般都能发出 ...
- 【AngularJs】---表单验证
1. 必填项 验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required /> 2 ...
- 导出Private API
首先介绍下private API 它共分为两类: 1 在官方文档中没有呈现的API(在frameworks 下隐藏) 2 苹果明确申明不能使用的API ,在privateFrameworks 下 然后 ...
- (转载)Nim游戏博弈(收集完全版)
Nim游戏的概述: 还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输.后来,在一份资料上看到,这种游戏称为“拈(Nim)”.据说,它源 ...
- Ajax-Demo
index.jsp 1 <%@ page language="java" contentType="text/html; charset=UTF-8" p ...
- Sql Server Profiler跟踪死锁
Sql Server Profiler一个很重要的应用场景就是监视分析死锁. 下面通过一个例子来学习Profiler是如何监视死锁的. 1. 创建测试数据模拟死锁, 创建表Table_A和Table_ ...
- windows server 2008下装SQL 2008R2x64
1. 在windows server 2008下装SQL 2008出现 This SQL Server Setup media is not supported on a X64 system 使用虚 ...
- st_mode 的位定义
先前所描述的st_mode 则定义了下列数种情况: S_IFMT 0170000 文件类型的位遮罩 S_IFSOCK 0140000 scoket S_IFLNK 0120000 符号连接 S_IFR ...