网络流24题 第一题 - 洛谷2756 飞行员配对方案 二分图匹配 匈牙利算法

欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解

 

题目传送门

题意概括

裸的二分图匹配

 

题解

匈牙利算法

上板子

 

代码

复制代码
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N=100+5;
int m,n,a,b,match[N],x[N],y[N];
bool g[N][N],vis[N];
bool dfs(int k){
    for (int i=1;i<=n;i++)
        if (g[k][i]&&!vis[i]){
            vis[i]=1;
            if (match[i]==-1||dfs(match[i])){
                match[i]=k;
                return 1;
            }
        }
    return 0;
}
int main(){
    memset(g,0,sizeof g);
    scanf("%d%d",&m,&n);
    while (scanf("%d%d",&a,&b)&&(a!=-1&&b!=-1))
        g[a][b]=g[b][a]=1;
    memset(match,-1,sizeof match);
    int cnt=0;
    for (int i=1;i<=n-m;i++){
        memset(vis,0,sizeof vis);
        if (dfs(i+m))
            cnt++;
    }
    int tot=0;
    for (int i=1;i<=m;i++)
        if (match[i]!=-1)
            x[++tot]=i,y[tot]=match[i];
    if (tot==0)
        printf("No Solution!");
    else
        printf("%d\n",tot);
    for (int i=1;i<=tot;i++)
        printf("%d %d\n",x[i],y[i]);
    return 0;
}
复制代码

 

posted @   zzd233  阅读(348)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用

点击右上角即可分享
微信分享提示