[网络流24题]飞行员配对方案问题

[luogu 2756]飞行员配对方案问题

题面luogu 2756

英国飞行员为左部节点,外国飞行员为右部节点,直接跑二分图匹配即可

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 105
using namespace std;
struct edge{
int from;
int to;
int next;
}E[maxn*maxn*2];
int n,m;
int sz=0;
int head[maxn];
void add_edge(int u,int v){
sz++;
E[sz].from=u;
E[sz].to=v;
E[sz].next=head[u];
head[u]=sz;
}
int match[maxn];
int vis[maxn];
int dfs(int x){
for(int i=head[x];i;i=E[i].next){
int y=E[i].to;
if(!vis[y]){
vis[y]=1;
if(!match[y]||dfs(match[y])){
match[y]=x;
return 1;
}
}
}
return 0;
}
int hungary(){
int ans=0;
for(int i=1;i<=m;i++){
memset(vis,0,sizeof(vis));
if(dfs(i)) ans++;
}
return ans;
}
int main(){
int u,v;
scanf("%d %d",&n,&m);
while(scanf("%d %d",&u,&v)!=EOF){
if(u==-1) break;
add_edge(u,v);
}
printf("%d\n",hungary());
for(int i=1;i<=m;i++){
if(match[i]!=0) printf("%d %d\n",match[i],i);
}
}
posted @   birchtree  阅读(567)  评论(0)    收藏  举报
编辑推荐:
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
阅读排行:
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 别再堆文档了,大模型时代知识库应该这样建
· 瞧瞧别人家的日期处理,那叫一个优雅!
· C#/.NET/.NET Core技术前沿周刊 | 第 35 期(2025年4.14-4.20)
· 使用TypeScript开发微信小程序(云开发)-入门篇
点击右上角即可分享
微信分享提示