【问题描述】

 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员。由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多。
如图,假设有10个驾驶员,如图中的V1,V2,…,V10就代表达10个驾驶员,其中V1,V2,V3,V4,V5是正驾驶员,V6,V7,V8,V9,V10是副驾驶员。如果一个正驾驶员和一个副驾驶员可以同机飞行,就在代表他们两个之间连一条线,两个人不能同机飞行,就不连。例如V1和V7可以同机飞行,而V1和V8就不行。请搭配飞行员,使出航的飞机最多。注意:因为驾驶工作分工严格,两个正驾驶员或两个副驾驶员都不能同机飞行.

【输入格式】

输入文件有若干行
第一行,两个整数n与n1,表示共有n个飞行员(2<=n<=100),其中有n1名飞行员是正驾驶员.
下面有若干行,每行有2个数字a,b。表示正驾驶员a和副驾驶员b可以同机飞行。
注:正驾驶员的编号在前,即正驾驶员的编号小于副驾驶员的编号.

【输出格式】

输出文件有一行
第一行,1个整数,表示最大起飞的飞机数。

【题解】

加上源点和汇点,求最大流(刘)。

【代码】

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#define min(x,y) x<y?x:y
#define max(x,y) x>y?x:y
const int maxf=0x7fffffff;
using namespace std;struct arr{int y,w,next;
}a[1000001];
int n,m,nm,ans;
int ls[4001],q[4001],ha[4001];void add(int u,int v,int z){nm++; a[nm].y=v; a[nm].w=z; a[nm].next=ls[u]; ls[u]=nm;nm++; a[nm].y=u; a[nm].next=ls[v]; ls[v]=nm;
}void init(){nm=1; int x,y;scanf("%d %d",&m,&n);scanf("%d %d",&x,&y);while (x!=y and x!=-1){add(x,y,1);scanf("%d %d",&x,&y);}for(int i=1;i<=n;++i){if (i<=m) add(0,i,1);else add(i,n+1,1);}
}bool bfs(){int x,t=0,w=1,p,i;memset(ha,-1,sizeof(ha));q[t]=ha[0]=0;while (t<w){x=q[t++];i=ls[x];while(i){if (a[i].w&&ha[a[i].y]<0){q[w++]=a[i].y;ha[a[i].y]=ha[x]+1;}i=a[i].next;}}if (ha[n+1]==-1) return 0;else return 1;
}int dfs(int x,int maxf){if (x==n+1) return maxf;int i=ls[x];int w,used=0;while(i){if(a[i].w&&ha[a[i].y]==ha[x]+1){w=maxf-used;w=dfs(a[i].y,min(w,a[i].w));a[i].w-=w;a[i^1].w+=w;used+=w;if(used==maxf)return maxf;}i=a[i].next;}if (used==0) ha[x]=-1;return used;
}void code(){ans=0;while (bfs()) ans+=dfs(0,maxf);if (ans!=0) printf("%d\n",ans);else printf("No Solution!");
}int main(){init();code();return 0;
}

转载于:https://www.cnblogs.com/zyx-crying/p/9319534.html

网络流24题1 飞行员配对方案问题相关推荐

  1. 【网络流24题】飞行员配对方案问题

    板子裸题 我永远热爱dinic #include<bits/stdc++.h> using namespace std; #define IL inline #define RG regi ...

  2. [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]

    经典二分图匹配,可以用匈牙利算法,也可以用最大流 代码如下(Dinic): #include <iostream> #include <cstdio> #include < ...

  3. cwl的网络流24题练习

    网络流24题 编号 题目 备注 1 飞行员配对方案问题 二分图最大匹配,可最大流解决 2 太空飞行计划问题   3 最小路径覆盖问题  有向图最小路径覆盖,解法都写题目上了 4 魔术球问题  有向图最 ...

  4. 网络流24题 飞行员配对方案问题

    «问题描述: 第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出 的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞 行员,另1 名是外籍飞 ...

  5. P2756 飞行员配对方案问题【网络流24题】

    P2756 飞行员配对方案问题 文章目录 题目背景 题解: 代码: 题目背景 第二次世界大战期间,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相 ...

  6. 网络流24题-飞行员配对方案问题

    飞行员配对方案问题 时空限制1000ms / 128MB 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能 ...

  7. 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)

    A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...

  8. 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其 ...

  9. 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)

    题干: 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另 ...

最新文章

  1. 创建Silverlight自定义启动画面
  2. GAITC 2020 演讲实录丨张立华:机器智能的发展现状
  3. 设计模式复习-组合模式
  4. lor: 一个基于OpenResty的lua framework
  5. iOS开发教程:Storyboard全解析-第二部分
  6. 纠错——【Singleton array array(0.2) cannot be considered a valid collection.】
  7. python计算小数点后有几位_python的数字类型
  8. Springmvc源码分析、底层原理
  9. 《Reids 设计与实现》第二章 字典
  10. 恢复SQLSERVER被误删除的数据(转——收藏)
  11. ur3 aubo movit机械臂运动
  12. 从零开始创建react项目的三种方法(转)
  13. VS Tips (new ones)
  14. 中国非制式爆炸物薄膜传感器研究取得进展
  15. 雄迈网络摄像头RTSP直播
  16. 用手机打开word图表位置很乱_干货 | 论文格式调半天?Word攻略帮你统统都搞定...
  17. Vijos - 古韵之鹊桥相会(最短路||DFS)
  18. php图片不显示怎么处理,如何解决php图片因存在错误而无法显示
  19. OB52 记账期间变式和公司主数据关联关系
  20. 阿里云一键登录(对接移动端) PHP

热门文章

  1. it计算机知识竞赛主持稿,校园IT知识竞赛策划书
  2. append有时加载不出来_关于艾拉浏览器看漫画,有时加载慢的解决方法,你知道了吗...
  3. git add 文件夹_软件测试学习资源—Git 基础使用
  4. mysql schema设计_mongodb 的 schema 设计方法
  5. Redis的 Window 版安装(详细配置环境,后台运行)
  6. 化验室计算机系统验证风险评估,计算机化系统验证风险评估报告.doc
  7. linux系统在pe下查看ip地址,pe下查看原系统ip的方法_网站服务器运行维护
  8. python线下课程厦门_厦门python课程
  9. TIMING_02 浅谈时序约束与时序分析
  10. wifi信号增强android,WiFi信号增强大师APP