博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络流24题之飞行员配对方案问题
阅读量:4610 次
发布时间:2019-06-09

本文共 1206 字,大约阅读时间需要 4 分钟。

题目链接:

二分图匹配(匈牙利)当然可以网络流写,但是二分图匹配明显简单一些,裸的,这里就不详细讲了。接下来上代码

#include
#define rg registerusing namespace std;typedef long long ll;inline int read(){ int x=0,f=1;char c=getchar(); while(c<'0'||c>'9') f= (c=='-')?-1:1,c=getchar(); while(c>='0'&&c<='9') x=x*10+c-48,c=getchar(); return f*x;}struct node{ int to,next; }a[10001];int head[10001],f[10001],b[10001],cnt;void add(int x,int y){ a[++cnt].to=y; a[cnt].next=head[x]; head[x]=cnt;}int find(int k){ for(int i=head[k];i;i=a[i].next){ int v=a[i].to; if(!f[v]){ f[v]=1; if(find(b[v])||!b[v]){ b[k]=v; b[v]=k; return 1; } } } return 0;}int main(){ int n,m,x,y,ans=0; n=read(),m=read(); while(scanf("%d%d",&x,&y)!=EOF){ if(x==-1&&y==-1) break; y+=n; add(x,y); add(y,x); } for(int i=1;i<=n;i++){ memset(f,0,sizeof(f)); ans+=find(i); } if(ans==0) printf("No Solution!"),exit(0); printf("%d\n",ans); for(int i=1;i<=n;i++) if(b[i]) printf("%d %d\n",i,b[i]-n);}

转载于:https://www.cnblogs.com/hbxblog/p/9708092.html

你可能感兴趣的文章
python的沙盒环境--virtualenv
查看>>
软件自动化测试——入门、进阶与实战
查看>>
BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
查看>>
BZOJ3675 [Apio2014]序列分割 动态规划 斜率优化
查看>>
2016.10.24 继续学习
查看>>
产品功能对标 - 服务授权管理
查看>>
各地IT薪资待遇讨论
查看>>
splay入门
查看>>
带CookieContainer进行post
查看>>
C语言学习笔记--字符串
查看>>
CSS-上下文选择器
查看>>
ionic repeat 重复最后一个时要执行某个函数
查看>>
1.初识代码审计-基础
查看>>
[Vue-rx] Stream an API using RxJS into a Vue.js Template
查看>>
解决VC几个编译问题的方法——好用
查看>>
SPOJ #11 Factorial
查看>>
City Upgrades
查看>>
“人少也能办大事”---K2 BPM老客户交流会
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>