博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1001: [BeiJing2006]狼抓兔子(初识是你最小割)
阅读量:5237 次
发布时间:2019-06-14

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

1001: [BeiJing2006]狼抓兔子

题目:

 

 

题解:

   听说这题当初是大难题...可惜当年没有网络流hahahha

   现在用网络流的思想就很容易解决了嘛

   给什么连什么,注意是双向边,然后跑最大流...AC

 

代码:

  

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define N 1100000 7 using namespace std; 8 struct node 9 {10 int x,y,c,next,other;11 }a[6110000];int len,last[3110000];12 int n,m,head,tail,st,ed;13 void ins(int x,int y,int c)14 {15 int k1,k2;16 len++;k1=len;17 a[len].x=x;a[len].y=y;a[len].c=c;18 a[len].next=last[x];last[x]=len;19 20 len++;k2=len;21 a[len].x=y;a[len].y=x;a[len].c=c;22 a[len].next=last[y];last[y]=len;23 24 a[k1].other=k2;25 a[k2].other=k1;26 }27 int list[3110000],h[3110000];28 bool bt_h()29 {30 memset(h,0,sizeof(h));h[st]=1;31 list[1]=st;head=1;tail=2;32 while(head!=tail)33 {34 int x=list[head];35 for(int k=last[x];k;k=a[k].next)36 {37 int y=a[k].y;38 if(h[y]==0 && a[k].c>0)39 {40 h[y]=h[x]+1;41 list[tail++]=y;42 }43 }44 head++;45 }46 if(h[ed]>0)return true;47 return false;48 }49 int find_flow(int x,int flow)50 {51 if(x==ed)return flow;52 int s=0,t;53 for(int k=last[x];k;k=a[k].next)54 {55 int y=a[k].y;56 if(h[y]==h[x]+1 && a[k].c>0 && flow>s)57 {58 t=find_flow(y,min(a[k].c,flow-s));59 s+=t;60 a[k].c-=t;a[a[k].other].c+=t;61 }62 }63 if(s==0)h[x]=0;64 return s;65 }66 int main()67 {68 while(scanf("%d%d",&n,&m)!=EOF)69 {70 len=0;memset(last,0,sizeof(last));71 st=1;ed=n*m;72 for(int i=1;i<=n;i++)73 for(int j=1;j

 

转载于:https://www.cnblogs.com/CHerish_OI/p/8098154.html

你可能感兴趣的文章
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
SpringBoot-thymeleaf
查看>>
P1908-逆序对
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
Android控件之GridView探究
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
snmpwalk命令常用方法总结
查看>>