搭配飞行员 dinic
[网络流24题] 搭配飞行员
★★☆ 输入文件:flyer.in
输出文件:flyer.out
简单对比
时间限制:1 s 内存限制:128 MB
第一行,两个整数n与n1,表示共有n个飞行员(2<=n<=100),其中有n1名飞行员是正驾驶员.
下面有若干行,每行有2个数字a,b。表示正驾驶员a和副驾驶员b可以同机飞行。
第一行,1个整数,表示最大起飞的飞机数。
1 7
2 6
2 10
3 7
4 8
5 9
1 #include<cmath> 2 #include<queue> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cstring> 6 #include<iostream> 7 #include<algorithm> 8 #define INF 1000 9 using namespace std; 10 struct node{ 11 int u,v,w,nxt; 12 }g[60010]; 13 int adj[60010],e; 14 void add(int u,int v,int w){ 15 g[e].v=v; g[e].u=u; g[e].w=w; 16 g[e].nxt=adj[u]; adj[u]=e++; 17 } 18 int n,m; 19 int S,T; 20 int dep[210]; 21 bool BFS(){ 22 memset(dep,0,sizeof(dep)); 23 queue<int> q; int k; 24 q.push(S),dep[S]=1; 25 while(!q.empty()){ 26 k=q.front(); q.pop(); 27 for(int i=adj[k];i!=-1;i=g[i].nxt){ 28 int v=g[i].v; 29 if(g[i].w && (!dep[v])){ 30 dep[v]=dep[k]+1; 31 q.push(v); 32 if(v==T) return 1; 33 } 34 } 35 } 36 return 0; 37 } 38 int dfs(int x,int fw){ 39 //printf("x==%d fw=%d\n",x,fw); 40 if(x==T) return fw; 41 int tmp = fw,k; 42 for(int i=adj[x];i!=-1;i=g[i].nxt){ 43 int v=g[i].v; 44 if(g[i].w && tmp && dep[v]==dep[x]+1){ 45 //cout<<"w== "<<g[i].w<<endl; 46 k=dfs(v,min(g[i].w,tmp)); 47 if(!k){ 48 dep[v]=0; 49 continue; 50 } 51 g[i].w-=k; g[i^1].w+=k; tmp-=k; 52 } 53 } 54 return fw-tmp; 55 56 } 57 void ot(); 58 int main(){ 59 freopen("flyer.in","r",stdin); 60 freopen("flyer.out","w",stdout); 61 scanf("%d%d",&n,&m); 62 int x,y; 63 S=0; T=110; 64 memset(adj,-1,sizeof(adj)); 65 for(int i=1;i<=n;i++){ 66 if(i<=m){ 67 add(S,i,1); add(i,S,0); 68 } 69 else{ 70 add(i,T,1); add(T,i,0); 71 } 72 } 73 while(scanf("%d%d",&x,&y)==2){ 74 add(x,y,1); add(y,x,0); 75 } 76 int sum=0; 77 int ans=0; 78 while(BFS()){ 79 //ot(); 80 while(sum=dfs(S,INF)){ 81 ans+=sum; 82 //cout<<"ans== "<<ans<<endl; 83 } 84 } 85 cout<<ans<<endl; 86 return 0; 87 }
转载于:https://www.cnblogs.com/FOXYY/p/7265789.html
搭配飞行员 dinic相关推荐
- 【网络流24题】搭配飞行员(最大流+二分图匹配)
传送门 搭配飞行员 题意:二分图匹配裸题,不多说 I think Dinic算法跑最大流解决||匈牙利算法 Code 代码一:Dinic #include<cstdio> #inc ...
- 【网络流24题】【LOJ6000】搭配飞行员(二分图最大匹配,最大流Dinic)
problem 给出一张二分图 求最大匹配 solution 新建一个源点s和汇点t 从源点s到集合A各连一条边,容量为1 从集合B到汇点t到各连一条边,容量为1 让二分图内部的边容量为1 很容易发现 ...
- 【网络流24题----01】飞行员配对方案问题
[问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如 ...
- 网络流24题1 飞行员配对方案问题
[问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如 ...
- 网络流 24 题汇总(LOJ 上只有 22 题???)
太裸的我就不放代码了...(黑体字序号的题表示值得注意) 1.搭配飞行员 [LOJ#6000] 二分图最大匹配. 2.太空飞行计划 [LOJ#6001] 最小割常规套路.输出方案.(注:这题换行符要用 ...
- 【您有新的未分配天赋点】网络流:从懵逼到完全懵逼
今天呢@assassain julao讲了一个在OI中极其重要,极其有趣,把无数人坑退役的知识点:网络流. 网络流呢顾名思义,就是在一个图中边有流量的限制,并根据这些流量限制做一些跟这个有关的事(ti ...
- 网络流24题(部分)
这次的题全是老爷题yooo- 搭配飞行员 普通二分图,,,源点向正飞行员连1的边,有取向 :->的正副飞行员连1或inf的边,副飞行员和汇点连1的边,然后跑最大流 源/汇点向飞行员连的边一定要单 ...
- [补档]2017-7-29 大佬讲课笔记
网络流 虽然dalao声音不大,但是很好听呢.不过dalao很快的进入正经主题了呢. 基本定义 1. 有n个点,m条有向边,其中源点 s 只有出边,没有入边.汇点 t 只有入边,没有出边. 2. 每条 ...
- 重走长征路---OI每周刷题记录---1月11日 2014
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...
最新文章
- 【error】error: field * has incomplete type
- linux命令ping
- click vue 重复调用_VUE防止多次点击,重复请求
- 乌班图系统的MySQL_乌班图系统mysql主从备份
- 百练2815:城堡问题(DFS)
- JAVA常用API或编程工具001---ITEXT把html转换成pdf的jar包,使用Java将HTML转换为PDF
- java gridlayout 设置列宽_在Kivy的GridLayout中设置网格列宽?
- [转载] python numpy 子数组_Python学习笔记3:Numpy入门
- 腾讯CDC:用户流失原因调研四步经
- ORA-28002 the password will expire
- Linux实战教学笔记01:计算机硬件组成与基本原理
- Ubuntu 无法mount解决办法
- Asp.net 2.0在Windows 2003 Server 上配置Microsoft Excel、Microsoft Word应用程序权限时 error: 8000401a 的解决方法!...
- pyqt+pyqtgraph+lka(界面制作)
- 工程师英语和计算机证书查询,点击进入国家硬件维修工程师证书查询网站
- Windows PE的作用
- IMAX Enhanced:让沉浸式家庭影音娱乐体验不再抽象
- app 播放服务器文件,配置apple-app-site-association文件并在服务器上传
- 【申博攻略】四.博士申请的个人自述怎么写
- 计算机u盘病毒清除方式,U盘如何格式化和清理病毒