题目链接:

https://www.luogu.com.cn/problem/P2756

方法一:

算法:1:匈牙利算法

思路:1:汉子找妹子模型

#include<bits/stdc++.h>using namespace std;
const int maxn=1e2+1,maxl=2e3+5e2+1;struct Line
{int v,next;
}e[maxl];int cnt,tot,m,n,a,b,h[maxn],match[maxn],hanzidemeizi[maxn];
bool vis[maxn];inline void add(int u,int v)
{e[cnt]=(Line){v,h[u]};h[u]=cnt++;
}inline bool dfs(int x)
{for(int i=h[x];i!=-1;i=e[i].next){int v=e[i].v;if(!vis[v]){vis[v]=true;if(!match[v]||dfs(match[v])){match[v]=x;hanzidemeizi[x]=v;return true;}}}return false;
}int main()
{ios::sync_with_stdio(0);scanf("%d %d",&m,&n);memset(h,-1,sizeof(h));while(true){scanf("%d %d",&a,&b);if(a==-1)break;add(a,b);}for(int i=1;i<=m;++i){memset(vis,0,sizeof(vis));if(dfs(i))tot++;}if(!tot)printf("No Solution!");else{printf("%d\n",tot);for(int i=1;i<=m;i++)if(hanzidemeizi[i]) printf("%d %d\n",i,hanzidemeizi[i]);}return 0;
}

方法二:

1:样例都没有过就ac啦,答案不唯一

样例我运行结果是
4
2 9
3 8
4 7
5 10
我知道也对,但是和样例结果不一样

2:最大流模板,FF算法

#include <bits/stdc++.h>using namespace std;
const int maxn=1e2+2,maxm=5e3+2e2+1;
int n,m,s,t,x,y,tot=1,head[maxn],vis[maxn];struct edge
{int to,next,w;
}e[maxm];void addedge(int x,int y,int w)
{e[++tot].to=y;e[tot].w=w;e[tot].next=head[x];head[x]=tot;
}int dfs(int x,int flow)//在没有走到汇点前,我们不知道流量是多少,所以flow是动态更新的
{if(x==t)return flow;//走到汇点返回本次增广的流量vis[x]=1;for(int i=head[x];i;i=e[i].next){int y=e[i].to,w=e[i].w;if(w&&!vis[y])//不要重复经过,如果到的点没有残余可以用的流量,那么走过去也没用{int t=dfs(y,min(flow,w));if(t>0)//顺着流过去,要受一路上最小容量的限制{e[i].w-=t;//此边残余容量减小并建立反向边e[i^1].w+=t;return t;}}}return 0;//无法到汇点
}int main()
{ios::sync_with_stdio(0);scanf("%d %d",&m,&n);s=0,t=n+1;for(int i=1;i<=m;i++)addedge(s,i,1),addedge(i,s,0);for(int i=m+1;i<=n;i++)addedge(i,t,1),addedge(t,i,0);while(true){scanf("%d %d",&x,&y);if(x==-1)break;addedge(x,y,1);addedge(y,x,0);/*反向边开始容量为0,表示不允许平白无故走反向边只有正向边流量过来以后,才提供返还流量的机会*/}int res=0,ans=0;while(memset(vis,0,sizeof(vis))&&(res=dfs(s,1e9/*假设flow很大*/))>0)ans+=res;if(!ans)printf("No Solution!");else{printf("%d\n",ans);for(int i=2;i<=maxm;i+=2)if(e[i].to!=t&&e[i^1].to!=s)if(e[i^1].w!=0)printf("%d %d\n",e[i^1].to,e[i].to);}return 0;
}

洛谷 P2756 飞行员配对方案问题 二分图 匈牙利算法 链式前向星 汉子找妹子模型 最大流模板 FF算法相关推荐

  1. 洛谷 - P2756 飞行员配对方案问题(二分图最大匹配+路径打印)

    题目链接:点击查看 题目大意:给出n个飞行员,m个外籍飞行员,每个外籍飞行员可以和多个英国飞行员匹配,每架飞机需要两名一名外籍飞行员和一名英国飞行员同时操作,问如何匹配才能使得一次能尽可能多的派出飞机 ...

  2. 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其 ...

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

    P2756 飞行员配对方案问题 文章目录 题目背景 题解: 代码: 题目背景 第二次世界大战期间,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相 ...

  4. P2756 飞行员配对方案问题

    题目链接:P2756 飞行员配对方案问题 题意 一共有 n n n 个飞行员,其中有 m m m 个外籍飞行员和 ( n − m ) (n - m) (n−m) 个英国飞行员,外籍飞行员从 1 1 1 ...

  5. P1155 双栈排序(二分图的染色判断+链式前向星)

    P1155 双栈排序 让字典序最小,当然尽量进S1 那什么时候必须进S2呢? a[i]和a[j] 不能压入同一个栈⇔存在一个k,使得i<j<k且a[k]<a[i]<a[j] 因 ...

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

    题目链接 题意:求一个最大的二分匹配,网络流最大流,自己造一个源点一个汇点,源点0到1~m流为1,m+1~n到汇点n+1流为1,然后就是题目给出的也是流为1,图就是这样的,套dinic一个板子,但是题 ...

  7. luogu2756 飞行员配对方案问题 (裸匈牙利)

    匈牙利: 4 8 1 5 1 6 2 5 3 5 3 7 4 5 4 7 4 8 -1 -1 out:4 #include<iostream> #include<cstdio> ...

  8. 洛谷 P1352 没有上司的舞会【树形DP/邻接链表+链式前向星】

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  9. 洛谷 P2349:金字塔 ← 链式前向星 dfs

    [题目来源] https://www.luogu.com.cn/problem/P2349 [题目描述] 有一盗墓者潜入一金字塔盗宝.当她(难道是 Lara Croft ?)打开一个宝箱的时候,突然冒 ...

最新文章

  1. 给网站管理员的建议:创建可利用的、可抓取的网站
  2. Only tensors or tuples of tensors can be output from traced functions
  3. Acwing第 14 场周赛【完结】
  4. 分布式系统原理 之9 CAP 理论
  5. 二叉树展开为链表Python解法
  6. Kubernetes 凭什么成了云原生应用底座?
  7. 几个不错的开源的.net界面控件[转贴]
  8. Resource is out of sync with the file system
  9. yy神曲url解析php_用PHP如何实现解析抖音无水印视频
  10. PDF虚拟打印机(virtual printer)软件汇总
  11. logback教程logback快速入门超实用详细教程收藏这一篇就够了(万字长文)
  12. 2u机架式服务器作用,不仅是一款通用的2U机架式服务器还具有足够的扩展力
  13. 百钱买百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
  14. info setup 制作的安装程序 提示卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录
  15. 《老梁四大名著情商课》笔记- 刚上班,别做林黛玉,也别做孙悟空
  16. 想去阿里大厂去面试测试工程师?想月薪15k?这篇文章一定对你有所帮助
  17. 云起赋新 | 亚马逊云科技高性能计算创新论坛精彩来袭!
  18. 电阻 电容 并联电路
  19. EasyNVR如何实现前端录像时间轴播放?
  20. SDN控制器究竟在干啥?

热门文章

  1. 十年前你绝对没有看懂的《大话西游》
  2. oracle 括号全角转半角,全角转换半角,该怎么处理
  3. 使用CDN网站加速的好处
  4. Android内存泄露和GC机制
  5. 用Python Django搭建简单一个steam钓鱼网站,只要免费领游戏,一钓一个准
  6. 【Java】七大排序(冒泡、选择、插入、快排、归并、堆排、希尔排序)
  7. Vue2点击阻断事件
  8. 装饰器设计模式--快餐店案例
  9. Hadoop基础之《(8)—yarn dr.who用户漏洞被挖矿》
  10. matlab用lu求逆矩阵,Matlab实现——求矩阵的逆(LU分解)