BZOJ 3504: [Cqoi2014]危桥|网络流
2016-01-12 09:23
513 查看
judge两次
1:S连a1 b1;a2 b2 连T
2:S连a1 b2;a2 b1 连T
窝用的是矩阵存的边……
1:S连a1 b1;a2 b2 连T
2:S连a1 b2;a2 b1 连T
窝用的是矩阵存的边……
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<set> #include<map> #include<iostream> #include<algorithm> #define T 99999 using namespace std; int v[55][55],dis[55],q[55],y[55][55]; int n,a1,a2,an,b1,b2,bn,S,W; bool BFS() { for(int i=0;i<=W;i++)dis[i]=0; dis[S]=1; int l=1,r=2;q[1]=S; while(l<r) { int x=q[l++]; for(int i=0;i<=W;i++) if(v[x][i]&&!dis[i]) { dis[i]=dis[x]+1; q[r++]=i; } } return dis[W]; } int dfs(int x,int f) { int ww=0,w; if(x==W)return f; for(int i=0;i<=W;i++) if(v[x][i]&&dis[i]==dis[x]+1) { w=dfs(i,min(v[x][i],f-ww)); ww+=w; v[x][i]-=w; v[i][x]+=w; if(f==ww)return ww; } return ww; } bool jud() { int used=0; while(BFS()) used+=dfs(S,T); return used==2*(an+bn); } int main() { while(scanf("%d%d%d%d%d%d%d",&n,&a1,&a2,&an,&b1,&b2,&bn)!=EOF) { memset(v,0,sizeof(v)); for(int i=0;i<n;i++) { char s[55]; scanf("%s",s); for(int j=0;j<n;j++) { if(s[j]=='O')v[i][j]=2; else if(s[j]=='N')v[i][j]=T; y[i][j]=v[i][j]; } } S=n,W=S+1; v[S][a1]=2*an; v[S][b1]=2*bn; v[b2][W]=2*bn; v[a2][W]=2*an; if(!jud()){puts("No");continue;} memset(v,0,sizeof(v)); for(int i=0;i<n;i++) for(int j=0;j<n;j++)v[i][j]=y[i][j]; v[S][a1]=2*an; v[S][b2]=2*bn; v[b1][W]=2*bn; v[a2][W]=2*an; if(!jud()){puts("No");continue;} puts("Yes"); } return 0; }
相关文章推荐
- Loadrunner之HTTP接口测试脚本实例
- 降低http请求次数
- 关于androidAsyncHttp支持https
- 程序员之网络安全系列(四):数据加密之非对称秘钥
- 2016年【太原网络营销师】郭文军教你做网站的第一步(域名与服务器)
- Java网络编程:利用Java mail包发送电子邮件
- http://shameant.iteye.com/blog/163007
- HTTP安全验证机制和Spring Security
- 四种方法下载网络文本数据到本地内存
- 使用ImageLoader第三方框架,加载网络图片
- IOS网络Socke(客户端,服务器端)t的简单介绍
- 2MSL TCP三次握手连接与四次握手关闭过程
- 网络基础
- 从http开始说Volley缓存
- 陕西高校试点在线授课 学生可跨校选修学分
- 优化网站的方法1-减少HTTP 请求
- 什么是网络分销?
- tcpdump
- HTTPS研究(1)—https协议入门
- 网络舆情分析师