LibreOJ 6000 搭配飞行员(最大流)
题解:最基础的最大流,按照主飞行员与起点建边,副飞行员与终点建边,可以同坐的主副飞行员之间建边,值均为一,然后跑一边最大流就完美了!
代码如下:
- #include<queue>
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define inf 0x3f3f3f3f
- using namespace std;
- int head[],next[],v[],w[],deep[];
- int s,t,cnt;
- void init()
- {
- cnt=-;
- memset(head,-,sizeof(head));
- memset(next,-,sizeof(next));
- }
- void add(int from,int to,int cost)
- {
- cnt++;
- next[cnt]=head[from];
- v[cnt]=to;
- w[cnt]=cost;
- head[from]=cnt;
- }
- void add_edge(int from,int to,int cost)
- {
- add(from,to,cost);
- add(to,from,);
- }
- int bfs(int s,int t)
- {
- queue<int> q;
- memset(deep,,sizeof(deep));
- deep[s]=;
- q.push(s);
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- for(int i=head[u];i!=-;i=next[i])
- {
- if(w[i]>&&(!deep[v[i]]))
- {
- deep[v[i]]=deep[u]+;
- q.push(v[i]);
- }
- }
- }
- if(!deep[t])
- {
- return ;
- }
- return ;
- }
- int dfs(int u,int t,int dist)
- {
- if(u==t)
- {
- return dist;
- }
- for(int i=head[u];i!=-;i=next[i])
- {
- if((deep[v[i]]==deep[u]+)&&w[i])
- {
- int di=dfs(v[i],t,min(w[i],dist));
- if(di>)
- {
- w[i]-=di;
- w[i^]+=di;
- return di;
- }
- }
- }
- return ;
- }
- int dinic(int s,int t)
- {
- int res=;
- while(bfs(s,t))
- {
- while(int d=dfs(s,t,inf))
- {
- res+=d;
- }
- }
- return res;
- }
- int main()
- {
- int n,m;
- init();
- scanf("%d%d",&n,&m);
- s=;t=n+;
- for(int i=;i<=m;i++)
- {
- add_edge(s,i,);
- }
- for(int i=m+;i<=n;i++)
- {
- add_edge(i,t,);
- }
- int x,y;
- while(scanf("%d%d",&x,&y)!=EOF)
- {
- add_edge(x,y,);
- }
- int ans=dinic(s,t);
- printf("%d\n",ans);
- }
LibreOJ 6000 搭配飞行员(最大流)的更多相关文章
- [LOJ 6000]搭配飞行员
link 其实就是一道二分图匹配板子,我们建立$S$,$T$为源点与汇点,然后分别将$S$连向所有正驾驶员,边权为$1$,然后将副驾驶员与$T$相连,边权为$1$,将数据中给出的$(a,b)$,将$a ...
- LibreOJ #6000. 「网络流 24 题」搭配飞行员
二次联通门 : LibreOJ #6000. 「网络流 24 题」搭配飞行员 /* LibreOJ #6000. 「网络流 24 题」搭配飞行员 二分图最大匹配 Dinic最大流 + 当前弧优化 */ ...
- LibreOJ #6000. 「网络流 24 题」搭配飞行员 最大匹配
#6000. 「网络流 24 题」搭配飞行员 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- cogs_14_搭配飞行员_(二分图匹配+最大流,网络流24题#01)
描述 http://cojs.tk/cogs/problem/problem.php?pid=14 有一些正飞行员和副飞行员,给出每个正飞行员可以和哪些副飞行员一起飞.一架飞机上必须一正一副,求最多多 ...
- COGS14. [网络流24题] 搭配飞行员
[问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞 ...
- [COGS 0014][网络流24题] 搭配飞行员
先贴题面 14. [网络流24题] 搭配飞行员 ★★☆ 输入文件:flyer.in 输出文件:flyer.out简单对比时间限制:1 s 内存限制:128 MB [问题描述] 飞行 ...
- Cogs 14. [网络流24题] 搭配飞行员(二分图匹配)
[网络流24题] 搭配飞行员 ★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 飞行大队有若干个来自各地的驾驶员,专门 ...
- [网络流24题] 搭配飞行员(cogs 14)
[问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞 ...
- 匈牙利算法 cojs.tk 搭配飞行员
cojs.tk 搭配飞行员 ★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 飞行大队有若干个 ...
随机推荐
- mybatis+druid+springboot 注解方式配置多个数据源
1\数据库配置 #test数据源 spring.datasource.test.url=jdbc:mysql:///db?useUnicode= spring.datasource.test.user ...
- [三卷天书]ajax请求时接收到乱码的处理方案
$.ajax({ url: "getmore.ashx", type: "post", dataType: "text", data: { ...
- 第15届浙江省赛 E LIS
LIS Time Limit: 1 Second Memory Limit: 65536 KB Special Judge DreamGrid is learning the LI ...
- Java-Runoob:Java 基本数据类型
ylbtech-Java-Runoob:Java 基本数据类型 1.返回顶部 1. Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根 ...
- 字符串转换为字典的函数eval(字符串)
首先把多行的字符串,变成一个字符串,用'''和'''扩起来: 然后把这个字符串,赋值给b 这个时候,b根本调不出来,也用不起来: 用eval(b),来格式化字符串变成字典: 然后b就变成了一个字典:
- 支付宝pc端支付接入PHP实现
引入支付宝接口 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $orde ...
- PHP中静态变量的使用
1.定义静态变量 public static $endpoint,$accessKeyId,$accessKeySecret,$bucket; 2.静态变量赋值 protected function ...
- Rest之路 - 搭建开发环境
准备Jersey框架和类库 从官网 (https://jersey.java.net/download.html) 下载最新的zip文件,解压后如下图: lib: 包含Jersey的所有类库. ext ...
- Centos7.2:搭建Ceph管理系统Inscope
0.引言 好几天没有更新博客了,这几天分配有任务:calamari与inscope管理系统调研.下面就管理系统的环境搭建做一个总结,总结一下搭建流程以及搭建过程中遇到的一些问题.calcamari的搭 ...
- 实用webpack-dev-server
webpack-dev-server的作用 文件作出改动之后,保存,立即开始编译文件 编译后的文件是保存在内存中的,在项目文件夹中看不到编译后的文件 编译完成之后立即自动刷新浏览器 测试webpack ...