博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——[ZJOI2009]狼和羊的故事 bzoj 1412
阅读量:6333 次
发布时间:2019-06-22

本文共 1996 字,大约阅读时间需要 6 分钟。

 

思路:

  最小割;

  狼作为一个点集a,空领地作为点集b,羊作为点集c;

  s向a连边,c向t连边,a向b连边,b向b连边,b向c连边;

  如何理解最小割?

  a,c之间割掉最少的路径(栅栏)使其没有通路;

 

来,上代码:

#include 
#include
#include
using namespace std;#define maxn 20005#define maxm 200005#define INF 0x7ffffffconst int dx[5]={
0,-1,0,1,0};const int dy[5]={
0,0,1,0,-1};int s,t,cnt=1,size,que[maxm],deep[maxn],n,m;int head[maxn],E[maxm],V[maxm],F[maxm],map[105][105];inline void edge_add(int u,int v,int f){ E[++cnt]=head[u],V[cnt]=v,F[cnt]=f,head[u]=cnt; E[++cnt]=head[v],V[cnt]=u,F[cnt]=0,head[v]=cnt;}bool bfs(){ for(int i=s;i<=t;i++) deep[i]=-1; int h=0,tail=1;que[h]=s,deep[s]=0; while(h
0) { deep[V[i]]=deep[now]+1; if(V[i]==t) return true; que[tail++]=V[i]; } } } return false;}int flowing(int now,int flow){ if(now==t||flow<=0) return flow; int oldflow=0; for(int i=head[now];i;i=E[i]) { if(deep[V[i]]==deep[now]+1&&F[i]>0) { int pos=flowing(V[i],min(flow,F[i])); F[i]-=pos,F[i^1]+=pos; flow-=pos,oldflow+=pos; if(flow==0) return oldflow; } } if(oldflow==0) deep[now]=-1; return oldflow;}int main(){ scanf("%d%d",&n,&m); size=n*m,t=size+1; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) scanf("%d",&map[i][j]); } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(map[i][j]==1) edge_add(s,(i-1)*m+j,INF); if(map[i][j]==2) edge_add((i-1)*m+j,t,INF); for(int v=1;v<=4;v++) { int xx=i+dx[v],yy=j+dy[v]; if(xx>0&&xx<=n&&yy>0&&yy<=m) { if(map[i][j]!=1||map[xx][yy]!=1) edge_add((i-1)*m+j,(xx-1)*m+yy,1); } } } } int ans=0; while(bfs()) ans+=flowing(s,INF); cout<

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6713329.html

你可能感兴趣的文章
Atitit 记录方法调用参数上下文arguments
查看>>
webstorm常用功能FTP,及常用快捷键
查看>>
eclipse html 打开方式
查看>>
[求助] win7 x64 封装 出现 Administrator.xxxxx 的问题
查看>>
人类投资经理再也无法击败电脑的时代终将到来了...
查看>>
一个最小手势库的实现
查看>>
HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
查看>>
Android支付之支付宝封装类
查看>>
<亲测>CentOS中yum安装ffmpeg
查看>>
【分享】马化腾:产品设计与用户体验
查看>>
【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
查看>>
降低数据中心能耗的六大环节从主要能源着手
查看>>
用友优普智能制造助华菱线缆实现3个人15亿排产
查看>>
全智慧的网络:思科十年来最具颠覆性的创新
查看>>
怎样将现有应用迁移到 VMware NSX
查看>>
赛门铁克收购以色列移动安全初创公司Skycure 旨在构建网络安全防御平台
查看>>
《Photoshop蒙版与合成(第2版)》目录—导读
查看>>
《团队软件过程(修订版)》—第1章1.3节TSPi的设计
查看>>
“最佳人气奖”出炉!4月27号,谁能拿到阿里聚安全算法挑战赛的桂冠?
查看>>
《网页美工设计Photoshop+Flash+Dreamweaver从入门到精通》——2.6 图层与图层样式...
查看>>