[网络流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  阅读(565)  评论(0编辑  收藏  举报
编辑推荐:
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
阅读排行:
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!
点击右上角即可分享
微信分享提示