经典二分图匹配,可以用匈牙利算法,也可以用最大流

代码如下(Dinic):

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <algorithm>
#include <queue>using namespace std;template<const int _n>
struct Edge
{struct Edge_base { int    to,next,w; }e[_n]; int    p[_n],cnt;void    insert(const int x,const int y,const int z){ e[++cnt].to=y; e[cnt].next=p[x]; e[cnt].w=z; p[x]=cnt; return ; }int    start(const int    x) { return p[x]; }void    clear() { cnt=1;memset(p,0,sizeof(p)); }Edge_base&    operator[](const int x) { return e[x]; }
};int    n,m,flow,SSS,TTT;
int    level[110],From[110],From_e[110];
Edge<310>    e;bool    Bfs(const int S)
{int    i,t;queue<int>    Q;memset(level,0,sizeof(level));memset(From,0,sizeof(From));level[S]=1;Q.push(S);while(!Q.empty()){t=Q.front(),Q.pop();for(i=e.start(t);i;i=e[i].next){if(!level[e[i].to] && e[i].w){level[e[i].to]=level[t]+1;Q.push(e[i].to);From[e[i].to]=t;From_e[e[i].to]=i;if(e[i].to==TTT)goto End;}}}
End:if(!level[TTT])return false;flow++;for(i=TTT;i!=SSS;i=From[i])e[From_e[i]].w--,e[From_e[i]^1].w++;return true;
}int    Dinic()
{while(Bfs(SSS));return flow;
}int main()
{freopen("flyer.in","r",stdin);freopen("flyer.out","w",stdout);int    i,x,y;scanf("%d%d",&m,&n);m=m-n;while(scanf("%d%d",&x,&y)==2){if(x>y)swap(x,y);e.insert(x,y,1);e.insert(y,x,0);}SSS=n+m+1,TTT=n+m+2;for(i=1;i<=n;++i){e.insert(SSS,i,1);e.insert(i,SSS,0);}for(i=n+1;i<=m+n;++i){e.insert(i,TTT,1);e.insert(TTT,i,0);}printf("%d\n",Dinic());return 0;
}

匈牙利代码:http://www.cnblogs.com/Ngshily/p/4988909.html

转载于:https://www.cnblogs.com/Gster/p/4989304.html

[Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]相关推荐

  1. 【网络流24题】圆桌聚餐(最大流)

    [网络流24题]圆桌聚餐(最大流) 题面 Cogs 题解 这道题很简单 首先每个单位的人数限制 直接从源点向单位连边,容量为人数 同样的, 每个桌子向汇点连边,容量为可以坐的人数 因为每个桌子只能够做 ...

  2. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案

    #6006. 「网络流 24 题」试题库   题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求试卷 ...

  3. LibreOJ 6004. 「网络流 24 题」圆桌聚餐 网络流版子题

    #6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...

  4. 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)...

    题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...

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

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

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

    [问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如 ...

  7. 【网络流24题】圆桌聚餐 (最大流)

    题意 假设有来自 nn n 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 riri r_i ​​.会议餐厅共有 mm m 张餐桌,每张餐桌可容纳 cici c_i​​ 个代表就餐. 为了使 ...

  8. [网络流24题][CODEVS1915]分配问题(网络流)

    题目描述 传送门 题解 设每个人为Xi,每个工作为Yi: 从源点向Xi连边,容量为1,费用为0: 从Yi向汇点连边,容量为1,费用为0: 从Xi向Yj连边,容量为1,费用为c[i][j]: 求最小费用 ...

  9. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

最新文章

  1. 洛谷 - P1433 - 吃奶酪 - dfs
  2. jquery无法删除一级域名cookie
  3. 恢复【谷歌浏览器开发者工具】默认设置(亲测)
  4. Java 8中的并行和异步编程
  5. python问题化教学设计_基于IPO的Python教学设计
  6. Java性能优化方面的程序优化知识点归纳,希望对你有所帮助
  7. For input string:
  8. 【matlab】三维曲面(矩形网格---meshgrid)
  9. Strtus2标签s:url
  10. 移远EC20 4G模块拨号相关
  11. CorelDRAWX4的VBA插件开发(九)循环的套用和统一尺寸
  12. 菜鸟版JAVA设计模式—从笔记本电源线看适配器模式
  13. SLAM 之四元数转欧拉角再理解
  14. 数据分析全国薪酬分布状况
  15. 音视频专题--音频剪辑原理
  16. Android网络操作和优化相关
  17. html5魔塔样板快速上手,《梦幻模拟战》魔塔攻略|先人一步,快速上手梦战自走棋指南...
  18. ONVIF 获取RTSP URL过程
  19. 以智能卡平台为硬件的嵌入式加密IC的优势
  20. 让代码审查扮演更好的角色

热门文章

  1. servlet容器_SpringBoot是否内置了Servlet容器?
  2. csr8670 修改key_CSR8670 DFU user guide
  3. 如何导出久其报表所有数据_如何选择好的HR软件
  4. 配置中文_星球大战:战机中队配置需求公布 支持中文
  5. linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解
  6. pat 乙级 1030 完美数列(C++)
  7. HDMI高清光端机产品介绍
  8. poe交换机标准与非标准的区别介绍
  9. [渝粤教育] 西安理工大学 人工智能导论 参考 资料
  10. 【渝粤教育】国家开放大学2018年春季 0471-21T畜牧学 参考试题