cogs_14_搭配飞行员_(二分图匹配+最大流,网络流24题#01)
描述
http://cojs.tk/cogs/problem/problem.php?pid=14
有一些正飞行员和副飞行员,给出每个正飞行员可以和哪些副飞行员一起飞.一架飞机上必须一正一副,求最多多少飞机可以飞.
分析
裸的二分图匹配...
请叫我水题小王子...
#include <bits/stdc++.h>
using namespace std; const int maxn=+,INF=0x7fffffff;
int n,m,cnt=;
int lvl[maxn],itr[maxn],head[maxn];
struct edge{
int to,cap,next;
edge(){}
edge(int to,int cap,int next):to(to),cap(cap),next(next){}
}g[maxn*maxn*];
void add_edge(int u,int v,int cap){
g[++cnt]=edge(v,cap,head[u]); head[u]=cnt;
g[++cnt]=edge(u,,head[v]); head[v]=cnt;
}
void bfs(int s){
memset(lvl,-,sizeof lvl);
lvl[s]=;
queue <int> q;
q.push(s);
while(!q.empty()){
int u=q.front(); q.pop();
for(int i=head[u];i;i=g[i].next){
int v=g[i].to;
if(lvl[v]<&&g[i].cap>){
lvl[v]=lvl[u]+;
q.push(v);
}
}
}
}
int dfs(int u,int t,int f){
if(u==t) return f;
for(int &i=itr[u];i;i=g[i].next){
int v=g[i].to;
if(g[i].cap>&&lvl[u]<lvl[v]){
int d=dfs(v,t,min(f,g[i].cap));
if(d>){
g[i].cap-=d;
g[i^].cap+=d;
return d;
}
}
}
return ;
}
int max_flow(int s,int t){
int flow=;
for(bfs(s);lvl[t]>;bfs(s)){
for(int i=;i<=n+;i++) itr[i]=head[i];
int f;
while((f=dfs(s,t,INF))>) flow+=f;
}
return flow;
}
void init(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) add_edge(,i,);
for(int i=m+;i<=n;i++) add_edge(i,n+,);
int u,v;
while(scanf("%d%d",&u,&v)!=EOF) add_edge(u,v,);
}
int main(){
freopen("flyer.in","r",stdin);
freopen("flyer.out","w",stdout);
init();
printf("%d\n",max_flow(,n+));
fclose(stdin);
fclose(stdout);
return ;
}
14. [网络流24题] 搭配飞行员
★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比
时间限制:1 s
内存限制:128 MB

如图,假设有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个整数,表示最大起飞的飞机数。
1 7
2 6
2 10
3 7
4 8
5 9
cogs_14_搭配飞行员_(二分图匹配+最大流,网络流24题#01)的更多相关文章
- 【最大流/二分图匹配】【网络流24题】【P3254】 圆桌问题
Description 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,--,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,--,n) ...
- 【最小割/二分图最大独立集】【网络流24题】【P2774】 方格取数问题
Description 给定一个 \(n~\times~m\) 的矩阵,每个位置有一个正整数,选择一些互不相邻的数,最大化权值和 Limitation \(1~\leq~n,~m~\leq~100\) ...
- LG2770/LOJ6122 航空路线问题 费用流 网络流24题
问题描述 LG2770 LOG6122 题解 教训:关掉流同步之后就不要用其他输入输出方式了. 拆点. 两个拆点之间连\((1,1)\),其他连\((1,0)\) \(\mathrm{Code}\) ...
- LG2766 最长不下降子序列问题 最大流 网络流24题
问题描述 LG2766 题解 \(\mathrm{Subtask 1}\) 一个求最长不下降子序列的问题,发现\(n \le 500\),直接\(O(n^2)\)暴力DP即可. \(\mathrm{S ...
- Cogs 14. [网络流24题] 搭配飞行员(二分图匹配)
[网络流24题] 搭配飞行员 ★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 飞行大队有若干个来自各地的驾驶员,专门 ...
- CJOJ 1494 【网络流24题】 搭配飞行员(二分图最大匹配)
CJOJ 1494 [网络流24题] 搭配飞行员(二分图最大匹配) Description 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾 ...
- BZOJ_4554_[Tjoi2016&Heoi2016]游戏_二分图匹配
BZOJ_4554_[Tjoi2016&Heoi2016]游戏_二分图匹配 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若 ...
- BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配
BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配 题意: 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回 ...
- luoguP2526_[SHOI2001]小狗散步_二分图匹配
luoguP2526_[SHOI2001]小狗散步_二分图匹配 题意: Grant喜欢带着他的小狗Pandog散步.Grant以一定的速度沿着固定路线走,该路线可能自交.Pandog喜欢游览沿途的景点 ...
随机推荐
- [.Net MVC] 用户角色权限管理_使用CLK.AspNet.Identity
项目:后台管理平台 意义:一个完整的管理平台需要提供用户注册.登录等功能,以及认证和授权功能. 一.为何使用CLK.AspNet.Identity 首先简要说明所采取的权限控制方式.这里采用了基于角色 ...
- 02_HttpClient_Get请求
[实例1. GET请求百度(乱码)] /** * Http GET请求百度,但是返回乱码 */ public static void main(String[] args) throws Except ...
- ZOJ 3211 Dream City(DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3374 题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上 ...
- C++ 遇见的一些函数
1.位与(&)操作,计算十进制数中的为"1"的位数 int cnt_one(int k) { ; //保存位为"1"的数量 while (k) { k ...
- Java7 switch新特性
在Java7之前,switch只能匹配整数值,和字符:而Java7添加了字符串的匹配特性. 代码如下: package blog; public class Main { public static ...
- 第33条:用EnumMap代替序数索引
有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum Type { ANNUAL, PER ...
- Linux内核中的通用双向循环链表
开发中接触Linux越来越多,休息放松之余,免不了翻看翻看神秘的Linux的内核.看到双向链表时,觉得挺有意思的,此文记下. 作为众多基础数据结构中的一员,双向循环链表在各种“教科书”中的实现是相当的 ...
- htmlt中的块状元素与内联元素
块元素(block element) address - 地址 blockquote - 块引用 center - 举中对齐块 dir - 目录列表 div - 常用块级容易,也是CSS layout ...
- 005.ClearStoredGroups方法
Delphi procedure ClearStoredGroups; 类型:procedure 可见性:protected 所在单元:System.RegularExpressionsCore 父类 ...
- Python 列表实现字典的get功能
字典有一个很好用的方法,就是get,既可以预防KeyError异常,也可以为不存在的key设置一个默认的value 例如: v=d.get('k','default') 而列表没有一个类似的方法,如果 ...