【网络流】——P2756 飞行员配对方案问题
时间:2019-08-17
本文章向大家介绍【网络流】——P2756 飞行员配对方案问题,主要包括【网络流】——P2756 飞行员配对方案问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
简单的二分图匹配问题。
GO:洛谷
水水就过了。
配对方案从边里面找:
- 一定是权值为0的边
- 源点一定在1~m间,汇点一定在m+1~n间
- 直接输出即可。
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1100; 4 const int inf=1e9; 5 int m,n,S,T,cnt=-1,maxflow; 6 int d[N],head[N<<1]; 7 struct edge{int to,next,f,from;}e[N<<1]; 8 void addedge(int from,int to,int f){e[++cnt]=(edge){to,head[from],f,from};head[from]=cnt;} 9 inline bool bfs(){ 10 memset(d,0,sizeof(d)); 11 queue<int>q; 12 q.push(S); 13 d[S]=1; 14 while(q.size()){ 15 int u=q.front(); 16 q.pop(); 17 for(int i=head[u];i!=-1;i=e[i].next){ 18 int v=e[i].to,f=e[i].f; 19 if(d[v]||!f) continue; 20 d[v]=d[u]+1; 21 q.push(v); 22 if(v==T) return 1; 23 } 24 } 25 return 0; 26 } 27 28 int dinic(int u,int flow){ 29 if(u==T) return flow; 30 int rest=flow; 31 for(int i=head[u];i!=-1&&rest;i=e[i].next){ 32 int v=e[i].to,f=e[i].f; 33 if(!f||d[v]!=d[u]+1) continue; 34 int k=dinic(v,min(rest,f)); 35 if(!k) d[v]=0; 36 else{ 37 e[i].f-=k; 38 e[i^1].f+=k; 39 rest-=k; 40 } 41 } 42 return flow-rest; 43 } 44 void solve(){ 45 int now=0; 46 while(bfs()){ 47 while(now=dinic(S,inf)) 48 maxflow+=now; 49 } 50 if(!maxflow){ 51 printf("No Solution!"); 52 } 53 else{ 54 printf("%d\n",maxflow); 55 for(int i=0;i<=cnt;i++){ 56 if(!e[i].f&&e[i].from>0&&e[i].from<=m&&e[i].to>m&&e[i].to<=n){ 57 printf("%d %d\n",e[i].from,e[i].to); 58 } 59 } 60 } 61 } 62 int main(){ 63 memset(head,-1,sizeof(head)); 64 scanf("%d%d",&m,&n); 65 int x=0,y=0; 66 S=0,T=n+1; 67 while(1){ 68 scanf("%d%d",&x,&y); 69 if(x<0) break; 70 addedge(x,y,1); 71 addedge(y,x,0); 72 } 73 for(int i=1;i<=m;i++){ 74 addedge(S,i,1); 75 addedge(i,S,0); 76 } 77 for(int i=m+1;i<=n;i++){ 78 addedge(i,T,1); 79 addedge(T,i,0); 80 } 81 solve(); 82 return 0; 83 }
切题真爽!
原文地址:https://www.cnblogs.com/Nelson992770019/p/11370348.html
- ios手势复习值之换图片-转场动画(纯代码)
- 顺序广播和无序广播
- Netflix Zuul与Nginx的性能对比
- 最有价值的50道java面试题(一)
- 用 Python 从零开始玩微信跳一跳
- ios地图小例子和手势的使用 供大家参考一下呦
- Spring Cloud源码分析(四)Zuul:核心过滤器
- basicAnimation移动图形
- 一个layer可以跟着画完的线移动ios程序 好玩啊。
- 最有价值的50道java面试题(二)
- android自定义属性
- kvo深入浅出举例
- 深入理解Android 自定义attr Style styleable以及其应用
- Spring Cloud实战小贴士:Zuul统一异常处理(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- K8S 生态周报| KIND v0.9 发布带来众多更新
- oracle 数据回滚,恢复误删的数据,闪回表功能的使用
- C语言 | 关于结构体内存对齐,看这篇就够了
- Python 图像处理篇-利用opencv库展示本地图片实例演示
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
- 从头创建您自己的vue.js——第2部分(虚拟DOM基础)
- Manage Jenkins报错:"依赖错误: 部分插件由于缺少依赖无法加载...",解决办法
- 从头创建您自己的vuei .js——第3部分(构建VDOM)
- adb 模拟上下左右滑动,示例演示
- python 技术篇-pythoncom.PumpMessag()关闭、杀死它的进程,pythoncom.PumpMessag()运行卡住解决办法
- PyQt5 技术篇-QWidget、QDialog程序窗口关闭closeEvent()触发事件方法重写
- 恕我直言你可能真的不会java第6篇:Stream性能差?不要人云亦云
- python-技术篇-打印详细报错日志,获取报错信息位置行数
- React从入门到放弃,一个关于网页速度的故事
- python 技术篇-日志定期清理设置,自动清理上个月的日志实例演示