博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3504: [Cqoi2014]危桥(网络流)
阅读量:5257 次
发布时间:2019-06-14

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

3504: [Cqoi2014]危桥

题目: 

 


 

 

题解:

   一开始觉得要跑四次网络流...但是想想好像两次?

   st-->a1/b1  a2/b2-->ed

   好像这样也OK?但是a1流b2或者b1流到a2怎么办?完了...又想错了。

   问了一波zzz大佬,他说我没想错...

   把b1和b2换过来再流一次的话...那原本a1流到b2的流量流到b1再流到a2那不就是相当于a1可以流到a2咯

   每次跑完都看一下流量是不是等于an+bn就好啦。

    


 

 

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define inf 999999999 7 using namespace std; 8 struct node 9 { 10 int x,y,c,next,other; 11 }a[210000];int len,last[110]; 12 int n,a1,a2,an,b1,b2,bn,st,ed; 13 void ins(int x,int y,int c) 14 { 15 int k1,k2; 16 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 k2=++len; 20 a[len].x=y;a[len].y=x;a[len].c=0; 21 a[len].next=last[y];last[y]=len; 22 23 a[k1].other=k2; 24 a[k2].other=k1; 25 } 26 int list[210000],h[110],head,tail; 27 bool bt_h() 28 { 29 list[1]=st;head=1;tail=2; 30 memset(h,0,sizeof(h)); 31 h[st]=1; 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(a[k].c>0 && h[y]==0) 39 { 40 h[y]=h[x]+1; 41 list[tail++]=y; 42 } 43 } 44 head++; 45 } 46 if(h[ed]==0)return false; 47 return true; 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 && s

 

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

你可能感兴趣的文章
TCP三次握手详解及释放连接过程
查看>>
gnome3
查看>>
图解iPhone开发新手教程
查看>>
zedboard 驱动理解
查看>>
求a的n次方
查看>>
尚硅谷资料库
查看>>
ios判断app是否有打开相机的权限
查看>>
Centos7LDAP LDAPadmin的完整部署记录(改良版,其它文档太多坑)
查看>>
B. Trees in a Row(cf)
查看>>
PowerShell导出场中的WSP包到本地
查看>>
nodejs下载图片到本地,根据百度图片查找相应的图片,通过nodejs保存到本地文件夹...
查看>>
使用Jquery解析Json基础知识
查看>>
SQLserver锁和事务隔离级别的比较与使用(转)
查看>>
Problem B: 分数类的类型转换
查看>>
python-zmail发送邮件
查看>>
RabbitMQ-rabbitmqctl和插件使用(四)
查看>>
Scrapy中的反反爬、logging设置、Request参数及POST请求
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定单词首字母大写
查看>>
C程序-进程内存结构分析
查看>>
bzero()函数
查看>>