文章目录

  • 题目描述
  • 解析
  • 代码

题目描述

Alice 和 Bob 居住在一个由 NN 座岛屿组成的国家,岛屿被编号为 00 到 N-1N−1。某些岛屿之间有桥相连,桥上的道路是双向的,但一次只能供一人通行。其中一些桥由于年久失修成为危桥,最多只能通行两次。

Alice 希望在岛屿 a1和 a2 之间往返 an次(从 a1 到 a2再从 a2 到 a1 算一次往返)。同时,Bob 希望在岛屿 b1和 b2之间往返 bn次。这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行。请问 Alice 和 Bob 能完成他们的愿望吗?

解析

首先可以把往返看成单程,危桥当成只能通过1次
建图方法和显然,但是会忽略a1流向b2、b1流向a2的问题
一个很巧妙的解决办法是交换b1和b2,再跑一次,如果还是满流,就是合法的

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2600;
const int M=1e9;
ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();};while(isdigit(c)){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,m,s,t;
struct node{int to,nxt;ll cap;
}p[N*N*2];
int fi[N],cnt;
void addline(int x,int y,ll cap){//  printf("x=%d y=%d cap=%lld\n",x,y,cap);p[++cnt]=(node){y,fi[x],cap};fi[x]=cnt;p[++cnt]=(node){x,fi[y],0};fi[y]=cnt;
}
int bel[N],cur[N];
queue<int>q;
int bfs(){memset(bel,0,sizeof(bel));bel[s]=1;q.push(s);while(!q.empty()){int now=q.front();q.pop();//printf("now=%d\n",now);for(int i=cur[now]=fi[now];~i;i=p[i].nxt){int to=p[i].to;//printf("  to=%d\n",to);if(bel[to]||!p[i].cap) continue;//printf("    ok\n");bel[to]=bel[now]+1;q.push(to);}}return bel[t];
}
ll dfs(int x,ll lim){if(x==t||!lim) return lim;ll res=0;for(int &i=cur[x];~i&&lim;i=p[i].nxt){int to=p[i].to;if(!p[i].cap||bel[to]!=bel[x]+1) continue;ll add=dfs(to,min(lim,p[i].cap));res+=add;lim-=add;p[i].cap-=add;p[i^1].cap+=add;if(!lim) break;}if(!res) bel[x]=-1;return res;
}
ll dinic(){ll tot=0;while(bfs()){//printf("ok");while(ll tmp=dfs(s,2e15)) tot+=tmp;}
//  printf("tot=%lld\n",tot);return tot;
}
int a1,a2,an,b1,b2,bn;
char ss[60][60];
void build(){char c;memset(fi,-1,sizeof(fi));cnt=-1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){c=ss[i][j];if(c=='X') continue;else if(c=='N') addline(i,j,2e18);else addline(i,j,1);}}
}
int main(){while(scanf("%d%d%d%d%d%d%d",&n,&a1,&a2,&an,&b1,&b2,&bn)!=EOF){a1++;a2++;b1++;b2++;for(int i=1;i<=n;i++){scanf(" %s",ss[i]+1);}s=n+1;t=n+2;build();addline(s,a1,an);addline(a2,t,an);addline(s,b1,bn);addline(b2,t,bn);if(dinic()!=an+bn){printf("No\n");continue;}build();addline(s,a1,an);addline(a2,t,an);addline(s,b2,bn);addline(b1,t,bn);if(dinic()!=an+bn) printf("No\n");else printf("Yes\n");}return 0;
}
/**/

YBTOJ危桥通行洛谷P3163:危桥通行(网络流)相关推荐

  1. 洛谷3171 网络吞吐量(网络流)

    t开成n结果cur赋值的时候也只赋值到t令人智熄 [题目分析] 好吧我承认这个错误真的呵呵........ 题目有那~~~~~么长,然后画画图这道题就基本看出正解了,再一看数据范围,n<=500 ...

  2. 洛谷 P1646 [国家集训队]happiness 网络流 最小割 Dinic+当前弧优化

    题目链接: https://www.luogu.com.cn/problem/P1646 参考博客: https://siyuan.blog.luogu.org/solution-p1646 算法:网 ...

  3. 洛谷Latex数学公式大全

    本文转载于 https://www.luogu.com.cn/blog/IowaBattleship/latex-gong-shi-tai-quan 转载请在文章页面明显位置注明出处. PS:资料来源 ...

  4. YBTOJ反素数洛谷P1463(数论)

    YBTOJ反素数&&洛谷P1463() 题目传送门 打表什么的就不说了,主要讲讲正解. 对于每个反素数,有如下性质: 性质1: 1~ N中的最大的反质数,就是1~N中约数个数最多的数中 ...

  5. YBTOJ荆轲刺秦洛谷P6474

    YBTOJ荆轲刺秦&&洛谷P6474 题目传送门 思路: 搜索框架很好想,用一个五元组表示搜索状态(x,y,u1,u2,t),意为用u1次隐身,u2次瞬移,花了t时间,来到(x,y). ...

  6. YBTOJ洛谷P4074:糖果公园(树上莫队)

    文章目录 解析 update: 代码 所谓树上莫队,就是在树上的莫队 (逃) 传送门 解析 似乎就是树上的这道题 考虑如何转化为序列问题呢? 考虑dfs序 但是又一个问题... 似乎这条链的dfs序不 ...

  7. YBTOJ洛谷P4551:最长异或路径(trie树)

    洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 本题关键就在于一点: 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为: dep[i] ^ dep ...

  8. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  9. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

最新文章

  1. IE和Firefox在JS方面的不兼容及统一方法总结
  2. Two ways to assign values to member variables
  3. win 7 新建文件夹 new folder Item Not Found 解决办法
  4. Python学习:Python简介
  5. .NET Core引入性能分析引导优化
  6. MacOS 如何显示/隐藏文件
  7. windows中当你的键盘无法使用时我们可以用另一种方法哦
  8. 表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...
  9. 七 内置锁 wait notify notifyall; 显示锁 ReentrantLock
  10. python启动c语言gdb,使用gdb调试python程序
  11. 《汇编语言》王爽—第八章实验七详解
  12. 红帽7.1安装Zabbix 3.4
  13. java上帝模块常见的情况_JVM上帝视角看JVM内存模型,分而治之论各模块详情详解...
  14. 如何测试聊天机器人的 10 个最佳实践
  15. 【ENSP模拟器】ENSP——VLAN的配置
  16. jass Timer详解
  17. 摄像头码流怎么设置_监控交换机怎么选?千兆/百兆/核心/PoE/光纤交换机选型指南...
  18. 使用Axis2创建一个Web Service的客户端 - 子非鱼,安知鱼之乐? - CSDNBlog
  19. vue前端项目基于淘宝lib-flexible做手机端适配
  20. 车载异构网络接入matlab,车载移动异构无线网络架构及关键技术

热门文章

  1. 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
  2. 在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?
  3. 凝思系统改时间_国产操作系统往事:四十年激变,终再起风云
  4. iphone桌面横屏设置在哪里_我和我各司其职的桌面们
  5. org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the
  6. 基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)
  7. html语言对齐是什么意思,html – 对齐RTL语言的元素
  8. [汇编语言]实验二:字的传送
  9. 数据结构与算法--经典10大排序算法(动图演示)【建议收藏】
  10. Zookeeper--ZAB与Paxos算法联系与区别